.fighter-roster-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0 9px}
.fighter-roster-count{font:12px var(--mono);color:#afa2c7;letter-spacing:.09em}
.fighter-instruction{margin-bottom:14px;font-size:14px}
.cards.class-roster{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0}
.class-roster .fighter-card{display:flex;flex-direction:column;min-width:0;padding:0;border:1px solid #68516f;border-radius:3px;background:#131225;box-shadow:inset 0 -2px #393049;text-align:left;overflow:hidden;cursor:pointer;transition:border-color .14s,box-shadow .14s}
.fighter-portrait{position:relative;width:100%;isolation:isolate;overflow:hidden;background:#141027}
.class-roster .character-art{height:auto;aspect-ratio:1/1;width:100%;margin:0;border:0;border-radius:0}
.class-roster .character-art img{width:100%;height:100%;object-fit:cover;transform:none!important;transition:none}
.fighter-portrait:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;box-shadow:inset 0 0 0 3px #1410207a;background:linear-gradient(180deg,transparent 60%,#100e2499)}
.fighter-index{position:absolute;z-index:2;top:7px;left:8px;font:12px var(--mono);color:#d3c6e5;text-shadow:1px 1px #090b14}
.fighter-idle-label{position:absolute;z-index:4;top:7px;right:6px;padding:3px 5px;background:#111123df;color:#7ff5f3;font:10px var(--mono);letter-spacing:.06em;opacity:0}
.class-roster .card-copy{display:flex;flex-direction:column;gap:4px;flex:1;padding:10px 10px 11px;border-top:1px solid #68516f;background:linear-gradient(115deg,#242038,#161326)}
.class-roster .card-top{gap:3px;align-items:center}
.class-roster .card-top h3{font:600 clamp(16px,1.65vw,21px)/1.2 var(--display);letter-spacing:.015em;overflow-wrap:anywhere}
.class-roster .checkmark{width:12px;font-size:14px}
.fighter-role{font-size:12px;color:#bfb3ce;line-height:1.3}
.class-roster .fighter-card:hover{border-color:#fa9ddf;box-shadow:0 0 0 1px #ed74c74d,0 0 19px #ed74c71c}
.class-roster .fighter-card:focus-visible{outline:2px solid #f1a9ed;outline-offset:3px;z-index:2}
.class-roster .fighter-card.selected{border-color:#65f3f0;box-shadow:0 0 0 1px #65f3f061,0 0 21px #65f3f022}
.class-roster .fighter-card.selected .card-copy{background:linear-gradient(110deg,#21444d,#1b233b);border-color:#65f3f070}
.fighter-sprite-stage{position:absolute;right:4%;bottom:4%;width:72%;max-width:154px;z-index:3;pointer-events:none;opacity:0;transition:opacity .12s;background:#100d21;border:1px solid #87eee799;border-radius:2px;box-shadow:0 0 0 3px #100d21b0,0 0 18px #5cece52b;overflow:hidden}
.fighter-sprite-stage:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 12px #100d2188,inset 0 -2px #85f5ed66;border-top:1px solid #fca4f438}
.fighter-sprite{position:relative;display:block;width:100%;aspect-ratio:var(--sprite-ratio,1);background-image:none;background-repeat:no-repeat;background-size:400% 200%;image-rendering:pixelated}
[data-sprite-src].sprite-ready .fighter-sprite{background-image:var(--sprite-image)}
.sprite-idle{background-position:0 0;animation:fighter-idle .8s steps(1,end) infinite;animation-play-state:paused}
.sprite-pose{background-position:100% 100%}
.fighter-card.sprite-ready:is(:hover,:focus-visible,.selected) .fighter-sprite-stage{opacity:1}
.fighter-card:is(:hover,:focus-visible,.selected) .fighter-idle-label{opacity:1}
.fighter-card:is(:hover,:focus-visible) .sprite-idle{animation-play-state:running}
.selection-burst.sprite-ready .sprite-pose{animation:fighter-select .64s steps(1,end) both}
.fighter-roster-status{margin:15px 0 23px;padding:11px 14px;border-left:2px solid #7cecf7;background:#55e6ed09;color:#c5b8d9;font-size:14px}
.fighter-roster-status strong{color:#91faf4}
.selected-fighter-visual{position:relative;min-width:0;isolation:isolate}
.selected-fighter-visual>.character-art{height:230px!important;margin:0;max-width:none}
.selected-fighter-visual>.fighter-sprite-stage{width:88%;max-width:185px;right:4%;bottom:14%}
.selected-fighter-visual.sprite-ready>.fighter-sprite-stage{opacity:1}
.cards.species-roster{max-height:clamp(480px,67vh,760px);overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;scrollbar-color:#ab5af6 #16152e;padding:5px 8px 5px 5px;scroll-padding:5px}
.species-roster .species-art img{object-fit:contain;padding:4%}
.species-roster .fighter-role{font-size:12px}
.species-roster .fighter-card:disabled{cursor:default}
.species-empty{grid-column:1/-1;padding:20px 4px}
.fighter-selected-label{position:absolute;left:0;bottom:0;right:0;padding:6px;text-align:center;background:#101829e8;border-top:1px solid #75e6eb6b;color:#8df5ed;letter-spacing:.11em;font:11px var(--mono);z-index:4}
@keyframes fighter-idle{0%,100%{background-position:0 0}25%{background-position:33.333333% 0}50%{background-position:66.666667% 0}75%{background-position:100% 0}}
@keyframes fighter-select{0%{background-position:var(--sprite-select-0,0%) 100%}25%{background-position:var(--sprite-select-1,33.333333%) 100%}50%{background-position:var(--sprite-select-2,66.666667%) 100%}75%,100%{background-position:var(--sprite-select-3,100%) 100%}}
@media(min-width:1600px){.cards.class-roster{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:1160px){.cards.class-roster{grid-template-columns:repeat(3,minmax(0,1fr))}.class-roster .card-copy{padding:10px 8px}.class-roster .card-top h3{font-size:18px}}
@media(max-width:650px){.cards.class-roster{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.class-roster .card-top h3{font-size:17px}.fighter-role{font-size:12px}.fighter-sprite-stage{width:78%}.fighter-index{top:5px;left:5px;font-size:11px}.fighter-idle-label{font-size:9px;padding:2px 3px}}
@media(max-width:420px){.cards.class-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.selected-fighter-visual{width:min(230px,100%);margin:auto}.class-roster .card-top h3{font-size:21px}}
@media(prefers-reduced-motion:reduce){.fighter-sprite{animation:none!important}.sprite-idle{background-position:0 0}.sprite-pose{background-position:100% 100%}.fighter-sprite-stage,.class-roster .fighter-card{transition:none}}
@media print{.class-roster,.fighter-roster-head,.fighter-instruction,.fighter-roster-status,.selected-fighter-visual{display:none!important}}
