/* Presentation stays outside the table geometry and never receives a click. */
.in-battle .hand-card.is-playable>.card-tile,.in-battle .field-card>.can-use-card{outline:1px solid #66cfff;outline-offset:1px;box-shadow:0 0 9px #32aaff70,0 0 20px #2383ff20;isolation:isolate}
.in-battle .hand-card.is-playable>.card-tile::after,.in-battle .field-card>.can-use-card::after{content:'';position:absolute;inset:0;border:1px solid #8fddff99;border-radius:5px;box-shadow:0 0 10px #3cbaff85,inset 0 0 9px #53bfff22;pointer-events:none;animation:card-ready-breathe 3.2s ease-in-out infinite}
.in-battle .hand-card.is-playable>.card-tile::before,.in-battle .field-card>.can-use-card::before{content:'';position:absolute;z-index:4;inset:1px;border-radius:5px;background:linear-gradient(115deg,transparent 34%,#c5f0ff00 40%,#c5f0ff35 49%,#ffffff2b 51%,transparent 62%);background-size:320% 100%;background-position:160% 0;pointer-events:none;animation:card-ready-sheen 7s ease-in-out infinite}
.in-battle .hand-card.is-playable>.card-tile:hover,.in-battle .hand-card.is-playable>.card-tile:focus-visible,.in-battle .field-card>.can-use-card:hover,.in-battle .field-card>.can-use-card:focus-visible{outline-color:#c6f0ff;box-shadow:0 0 13px 2px #70d9ff95,0 0 30px #2383ff35}
.in-battle .card-tile.fx-card-arrives{animation:card-arrives .36s cubic-bezier(.18,.8,.3,1) both}
.in-battle .card-tile.fx-card-deploys{animation:card-deploys .4s cubic-bezier(.18,.8,.3,1) both}
.in-battle .card-tile.fx-card-activates{animation:card-activates .4s ease-out both}
.in-battle .card-tile.fx-card-readies{animation:card-readies .5s ease-out both}
.in-battle .card-tile.fx-card-heal{animation:card-heal .5s ease-out both}
.in-battle .card-tile.fx-card-damage{animation:card-damage .4s ease-out both}
.in-battle .card-tile.fx-card-threat{animation:card-threat .55s ease-out both}
.in-battle .card-tile.fx-card-uses{animation:card-uses .45s ease-out both}
@keyframes card-ready-breathe{0%,100%{opacity:.36}50%{opacity:.95}}
@keyframes card-ready-sheen{0%,64%,100%{background-position:160% 0}82%{background-position:-70% 0}}
@keyframes card-arrives{from{opacity:.15;transform:translateY(12px) scale(.94)}to{opacity:1;transform:none}}
@keyframes card-deploys{0%{opacity:.2;transform:scale(.88)}65%{opacity:1;transform:scale(1.025);filter:brightness(1.18)}100%{transform:none;filter:none}}
@keyframes card-activates{0%{transform:none}40%{transform:translateY(-3px) rotate(-3deg);filter:brightness(1.3)}100%{transform:none;filter:none}}
@keyframes card-readies{0%,100%{filter:none}45%{filter:brightness(1.5) drop-shadow(0 0 7px #5cceff)}}
@keyframes card-damage{0%,100%{filter:none;transform:none}25%{filter:sepia(.5) saturate(2.5) drop-shadow(0 0 7px #ff5252);transform:translateX(-2px)}55%{transform:translateX(2px)}}
@keyframes card-heal{0%,100%{filter:none}45%{filter:brightness(1.3) drop-shadow(0 0 7px #66e8af)}}
@keyframes card-threat{0%,100%{filter:none}45%{filter:brightness(1.3) drop-shadow(0 0 7px #f4b742)}}
@keyframes card-uses{0%,100%{filter:none}45%{filter:brightness(1.3) drop-shadow(0 0 6px #71d9ff)}}

.battle-phase-banner{--phase-accent:#66d5ff;position:fixed;z-index:10000;inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;padding:20px;border:0;overflow:clip;background:transparent;color:#f3faff;pointer-events:none!important;align-items:center;justify-items:center}
.battle-phase-banner[hidden]{display:none!important}
.battle-phase-banner:not([hidden]){display:grid}
.battle-phase-banner::backdrop{background:transparent;pointer-events:none}
.phase-banner-panel{position:relative;isolation:isolate;width:min(580px,100%);padding:22px 28px;text-align:center;overflow:hidden;border:1px solid color-mix(in srgb,var(--phase-accent) 65%,transparent);border-inline:3px solid var(--phase-accent);border-radius:5px;background:linear-gradient(110deg,#091727f5,#12324af5 50%,#091727f5);box-shadow:0 8px 45px #0208129c,0 0 24px color-mix(in srgb,var(--phase-accent) 25%,transparent),inset 0 0 28px #051421aa;opacity:0;transform:translateY(9px) scale(.97);transition:opacity .16s ease,transform .2s cubic-bezier(.2,.8,.3,1)}
.phase-banner-panel:before{content:'';position:absolute;z-index:-1;inset:0;background:linear-gradient(105deg,transparent 35%,color-mix(in srgb,var(--phase-accent) 20%,transparent),transparent 65%);background-size:250% 100%;animation:phase-light-sweep 1.1s ease-out both}
.phase-banner-eyebrow{display:block;color:var(--phase-accent);font:700 10px/1.4 Command,Arial,sans-serif;letter-spacing:3px;text-transform:uppercase;margin-bottom:7px}
.phase-banner-title{display:block;margin:0;font:800 clamp(25px,4.8vw,42px)/1.05 Condensed,Impact,sans-serif;letter-spacing:1px;text-transform:uppercase;text-shadow:0 2px 12px #0009}
.phase-banner-subtitle{display:block;margin:8px 0 0;color:#cad9e6;font:400 12px/1.4 Command,Arial,sans-serif}
.battle-phase-banner.is-visible .phase-banner-panel{opacity:1;transform:none}
.battle-phase-banner.is-leaving .phase-banner-panel{opacity:0;transform:translateY(-6px) scale(1.015)}
.battle-phase-banner[data-tone=villain],.battle-phase-banner[data-tone=defeat]{--phase-accent:#ff6b72}
.battle-phase-banner[data-tone=villain] .phase-banner-panel,.battle-phase-banner[data-tone=defeat] .phase-banner-panel{background:linear-gradient(110deg,#1f101cf5,#47202df5 50%,#1f101cf5)}
.battle-phase-banner[data-tone=victory]{--phase-accent:#f6d178}
.battle-phase-banner[data-tone=victory] .phase-banner-panel{background:linear-gradient(110deg,#1e1b12f5,#3b3420f5 50%,#1e1b12f5)}
.battle-phase-banner[data-tone=setup]{--phase-accent:#b6a9ff}
@keyframes phase-light-sweep{from{background-position:140% 0}to{background-position:-90% 0}}

.card-hover-preview{position:fixed;z-index:9999;inset:auto;margin:0;padding:0;border:0;border-radius:7px;background:transparent;overflow:visible;pointer-events:none!important;filter:drop-shadow(0 9px 18px #000c);opacity:0;transform:scale(.96);transition:opacity .12s ease,transform .14s cubic-bezier(.2,.8,.3,1)}
.card-hover-preview[hidden]{display:none!important}
.card-hover-preview.is-visible{opacity:1;transform:none}
.card-hover-preview::backdrop{background:transparent;pointer-events:none}
.card-hover-art{display:block;width:100%;height:100%;object-fit:contain;border-radius:6px;outline:1px solid #99c9e488;box-shadow:0 0 0 3px #071728a8,0 0 24px #5ebdff38}
.card-hover-fallback{max-width:none;max-height:none;box-sizing:border-box;box-shadow:0 0 0 2px #071728a8,0 0 16px #5ebdff38}
.card-hover-caption{display:block;position:absolute;top:100%;left:0;width:100%;height:21px;margin:2px 0 0;padding:3px 5px;border-radius:3px;background:#081522f2;color:#e2f2ff;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:600 10px/1.3 Command,Arial,sans-serif}
@media(hover:hover) and (pointer:fine){body{cursor:url('assets/ui/hero-gauntlet-pointer.png') 3 3,default}body :is(a[href],button:not(:disabled),summary,label[for],.selection-face,.generator-chip){cursor:url('assets/ui/hero-gauntlet-pointer.png') 3 3,pointer!important}body :is(input[type=text],input[type=search],input[type=number],input[type=url],textarea){cursor:text!important}}
@media(hover:hover) and (pointer:fine){body button:is([data-hand-use],[data-board-use]),body button:is([data-hand-use],[data-board-use]) *{cursor:url('assets/ui/hero-gauntlet-ready.png') 3 3,url('assets/ui/hero-gauntlet-pointer.png') 3 3,pointer!important}}
@media(max-height:450px){.phase-banner-panel{padding:12px 20px;width:min(480px,100%)}.phase-banner-title{font-size:28px}.phase-banner-eyebrow{font-size:8px;margin-bottom:4px}.phase-banner-subtitle{font-size:10px;margin-top:5px}}
@media(prefers-reduced-motion:reduce){.in-battle .card-tile,.in-battle .card-tile::before,.in-battle .card-tile::after,.phase-banner-panel:before{animation:none!important}.phase-banner-panel,.card-hover-preview{transition:none!important;transform:none!important}}
@media(prefers-contrast:more){.phase-banner-panel{border:2px solid var(--phase-accent);background:#07111d}.card-hover-art{outline:2px solid white}}
