.research-wallet{display:flex;flex-wrap:wrap;gap:10px;margin:-5px 0 15px;font-size:11px;color:#426575}.research-wallet span{background:#fff8e8;border:1px solid #e8dcb7;border-radius:7px;padding:6px 10px}.filter-row{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 17px}.filter-row button{font-size:11px;padding:7px 11px}.chosen{background:#d9effa!important;border-color:#4c93b9!important;box-shadow:0 0 0 2px #80bfdf44}.hero-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.roster-card{min-width:0;padding:12px}.roster-card .hero-art{height:220px;position:relative;border-radius:9px}.roster-card .hero-portrait{background-size:300% 100%}.rarity-label,.class-label{position:absolute;border-radius:5px;background:#245e8be8;color:#fff;padding:3px 8px;font-weight:800;font-size:12px;top:8px;left:8px}.class-label{left:auto;right:8px;font-size:9px;background:#ffffffec;color:#2e5268}.rarity-SR .rarity-label{background:#8654b7}.rarity-SSR .rarity-label{background:#bc861f}.rarity-SSR{border-color:#d6b46b}.rarity-SR{border-color:#b8a0d0}.stars{color:#b48327;letter-spacing:2px;font-size:18px;white-space:nowrap}.deployed{display:inline-block;color:#327c69;font-size:10px}.skill-info{background:#e8f2f6;padding:8px;border-radius:6px;min-height:90px}.skill-info strong{font-size:11px}.skill-info small{font-size:10px}.roster-card button{font-size:11px;padding:7px 4px}.roster-card button small{font-size:9px;font-weight:400;color:#506977}.hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.unowned .hero-art{filter:saturate(.6)}.district-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:25px}.district-card{padding:7px;display:flex;flex-direction:column;align-items:center;overflow:hidden;background:linear-gradient(#eaf7fb,#fff);text-align:center}.district-card strong{font-size:11px}.district-card small{font-size:10px;margin-bottom:6px}.district-card>span:last-child{font-size:9px;color:#597384;line-height:1.5}.district-card.locked{opacity:.64;background:#e4ecf0}.district-card.locked .district-art{filter:grayscale(1);opacity:.6}.district-art{display:block;flex-shrink:0;width:100%;height:120px;background-image:url('/assets/districts.png');background-size:400% 200%;background-repeat:no-repeat}.core-building{display:block;width:100%;height:120px;background-image:url('/assets/siginak-10plus.png');background-size:350% 250%;background-position:50% 20%}.core-1{background-position:20% 55%}.core-2{background-position:85% 55%}.core-3{background-position:50% 88%}dialog .district-art{width:230px;height:190px;margin:auto}.formation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.formation-grid .hero-art{height:200px}.formation-grid svg{height:90px;width:100%}.stance-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stance-grid strong{display:block}.unit{width:100px;min-width:80px}.unit svg{display:block;width:80px;height:64px;margin:auto}.unit b{font-size:11px;color:#315d75}.unit small{font-size:9px}.section-label{margin-top:22px}.tier-mini{font-size:9px;color:#96651d}#squad .portrait{height:60px}nav button{padding:9px}nav span{font-size:12px;margin-left:8px}.combat-modal{width:min(1050px,96vw);padding:22px;max-height:95vh;overflow:auto}.combat-modal h2{margin:8px 0 12px;font-size:24px}.battle-score{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:#426778;margin:10px 0}.battle-score span:nth-child(2){font-size:10px;color:#8f681d}#combatCanvas{width:100%;height:auto;aspect-ratio:900/530;border:1px solid #9dc6d7;border-radius:10px;background:#c2e6ec;cursor:default}.combat-commanders{display:flex;gap:8px;justify-content:space-around;margin-top:10px}.combat-commanders>div{display:flex;gap:8px;align-items:center}.combat-head{display:block;width:40px;height:48px;overflow:hidden;border:1px solid #c8ae69;border-radius:6px}.combat-head .hero-portrait{background-size:300% 100%}.combat-commanders b{font-size:11px}.combat-commanders small{font-size:9px}.combat-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.combat-bottom p{min-height:25px;flex:1}.combat-bottom button{font-size:10px;white-space:nowrap;padding:5px 10px}.result-banner{background:#fff3cf;border:1px solid #e4c27c;border-radius:8px;padding:12px;text-align:center}.result-banner strong{color:#a37728;font-size:20px}.result-banner small{color:#7b6335}.combat-modal .wide{margin-top:8px}.hero-roster .hero-art svg{display:none}@media(max-width:1300px){.hero-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.district-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){nav{overflow-x:auto;justify-content:flex-start}nav button{flex-shrink:0;padding:7px}nav span{font-size:9px;margin-left:3px}.research-wallet{font-size:9px;gap:5px}.research-wallet span{padding:5px 7px}.hero-roster{gap:8px}.roster-card{padding:8px}.roster-card .hero-art{height:190px}.hero-actions{grid-template-columns:1fr}.skill-info{min-height:105px}.roster-card h3{font-size:14px}.roster-card button{font-size:10px}.rarity-label{font-size:10px;padding:2px 5px}.class-label{font-size:8px;padding:3px 4px}.district-grid{gap:7px}.district-art,.core-building{height:95px}.district-card{padding:4px}.district-card strong{font-size:10px}.district-card>span:last-child{display:none}.formation-grid{gap:7px}.formation-grid .card{padding:8px}.formation-grid .hero-art{height:130px}.formation-grid h3{font-size:12px}.stance-grid{gap:6px}.stance-grid button{font-size:11px;padding:8px 5px}.stance-grid small{font-size:9px}.combat-modal{padding:13px;width:98vw}.combat-modal h2{font-size:19px}#combatCanvas{aspect-ratio:900/650}.battle-score{font-size:9px}.battle-score span:nth-child(2){font-size:8px}.combat-commanders{gap:5px}.combat-head{width:30px;height:39px}.combat-commanders>div{gap:4px}.combat-commanders b{font-size:9px}.combat-commanders small{font-size:7px}.combat-bottom p{font-size:10px}.combat-head .hero-portrait{background-size:300% 100%}}
.hero-art .hero-portrait,.roster-card .hero-portrait{background-size:300% auto}
@media(max-width:720px){.roster-card .hero-art{height:210px}.skill-info{min-height:105px}}

.replay-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:10px}.combat-modal .combat-commanders .hero-portrait{background-size:300% auto}

/* Full-body cards: an intrinsic SVG viewBox always fits both dimensions. */
.roster-card .hero-art.hero-art-fullbody,
.formation-grid .hero-art.hero-art-fullbody{
 position:relative;display:block;height:clamp(240px,24vw,380px);
 min-height:0;padding:0;overflow:hidden;
 background:radial-gradient(ellipse at 50% 82%,#b6d5df88 0%,transparent 48%),linear-gradient(155deg,#edf8ff,#c4e2ee 68%,#e9f3de);
}
.hero-art-fullbody>.hero-fullbody{position:absolute;inset:32px 10px 10px;display:block;min-width:0;min-height:0}
.hero-art.hero-art-fullbody .hero-fullbody-svg{display:block;width:100%;height:100%;max-width:none;max-height:none;overflow:hidden}
.hero-art-fullbody:hover .hero-fullbody-svg{transform:none}
@media(max-width:720px){
 .roster-card .hero-art.hero-art-fullbody{height:clamp(230px,64vw,320px)}
 .formation-grid .hero-art.hero-art-fullbody{height:clamp(180px,44vw,260px)}
 .hero-art-fullbody>.hero-fullbody{inset:30px 7px 8px}
}
@media(orientation:landscape) and (max-height:520px){
 .roster-card .hero-art.hero-art-fullbody,
 .formation-grid .hero-art.hero-art-fullbody{height:260px}
}
