.gameShell .officerPortrait{display:block;flex:0 0 80px;width:80px;height:80px;border-radius:8px;background:#303733 url('/assets/officers/portraits-v2.png') var(--portrait-x,0%) var(--portrait-y,0%)/400% 300% no-repeat;border:1px solid #788273;box-shadow:inset 0 0 0 1px #ffffff10}.gameShell .officerCard>header{display:grid;grid-template-columns:80px minmax(0,1fr);position:relative;align-items:center;gap:16px;padding-bottom:20px}.gameShell .officerCard>header>.rank-insignia{position:absolute;width:25px;height:35px;left:60px;bottom:12px;filter:drop-shadow(0 2px 2px #0008)}.gameShell .officerCard>header h3{font-size:22px!important}.gameShell .smallPortrait{width:32px;height:32px;flex-basis:32px;border-radius:5px}.gameShell .unitOfficer>.officerPortrait.smallPortrait{width:32px;height:32px;flex:0 0 32px}.gameShell .fieldOfficer .smallPortrait{display:none}.gameShell .officerPromotionBadge{position:relative;align-self:start;padding:0}.gameShell .officerPromotionBadge .officerPortrait{width:64px;height:64px;flex-basis:64px}.gameShell .officerPromotionBadge>.rank-insignia{position:absolute;right:-5px;bottom:-12px;width:25px;height:36px}.gameShell .portraitPicker{padding:0;margin:16px 0 24px;border:0;min-width:0}.gameShell .portraitPicker legend{font-size:15px;font-weight:550}.gameShell .portraitPicker>p{font-size:12px;line-height:1.5}.gameShell .portraitPicker>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.gameShell .portraitPicker label{position:relative;cursor:pointer;border-radius:8px;display:block}.gameShell .portraitPicker .officerPortrait{width:100%;height:auto;aspect-ratio:1;box-sizing:border-box;flex-basis:auto;border:2px solid transparent}.gameShell .portraitPicker input{position:absolute;z-index:1;right:5px;bottom:5px;width:16px;height:16px;margin:0;accent-color:var(--ui-accent)}.gameShell .portraitPicker label:has(input:checked) .officerPortrait{border-color:var(--ui-accent);box-shadow:0 0 0 2px #d6c49e33}.gameShell .portraitPicker label:focus-within{outline:2px solid var(--ui-accent);outline-offset:3px}.gameShell .unitStackFan{width:min(440px,calc(100vw - 24px));box-sizing:border-box;max-height:calc(100dvh - 40px);padding:20px;border:1px solid #78816d;border-radius:16px;overflow:auto;background:var(--ui-panel);color:var(--ui-text)}.gameShell .unitStackFan::backdrop{background:#0e181770;backdrop-filter:blur(3px)}.gameShell .unitStackFan>header{display:flex;justify-content:space-between;align-items:center;gap:12px}.gameShell .unitStackFan h2{font-size:22px;margin:0;line-height:1.3}.gameShell .unitStackFan header button{width:44px;height:44px;font-size:22px;flex-shrink:0}.gameShell .stackFanContent>p{font-size:13px;line-height:1.5;color:var(--ui-muted);overflow-wrap:anywhere}.gameShell .stackFanGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.gameShell .stackFanGrid>button{display:grid;gap:7px;text-align:left;min-height:125px;padding:14px;align-content:start;background:#28332e;transition:background .15s,border-color .15s}.gameShell .stackFanGrid>button[aria-pressed=true]{border-color:#d6c49e;background:#3c4434}.gameShell .stackFanGrid b{font-size:14px;line-height:1.35;overflow-wrap:anywhere}.gameShell .stackFanGrid small{font-size:12px;color:var(--ui-muted);line-height:1.4}.gameShell .stackFanArt{height:30px;display:flex;align-items:center;color:#d2d9c1}.gameShell .stackFanArt svg{width:36px;height:30px}.gameShell .stackSelectAll{display:block;width:100%;background:var(--ui-accent)!important;color:var(--ui-ink)!important;min-height:48px}.gameShell .stackFanHint{font-size:12px!important}.gameShell .troopStack{min-width:100px;min-height:40px;padding:10px 14px;border:1px solid #b3c8aa;background:#273e34;color:#eef1df;font-size:13px;border-radius:9px;box-shadow:0 3px 12px #0005}.gameShell .crossingStages{list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 24px}.gameShell .crossingStages li{display:grid;align-content:start;justify-items:center;gap:8px;font-size:11px;line-height:1.4;text-align:center;color:var(--ui-muted)}.gameShell .crossingStages li i{display:grid;place-items:center;width:27px;height:27px;border:1px solid #59645b;border-radius:50%;font-style:normal;font-size:12px;background:#29312d}.gameShell .crossingStages .done i{color:#c9ddbc;border-color:#a7bb97}.gameShell .crossingStages .current{color:var(--ui-text)}.gameShell .crossingStages .current i{background:var(--ui-accent);color:var(--ui-ink);border-color:var(--ui-accent)}.gameShell .journeyStages{margin:18px 0}.gameShell .unitServiceRecord h4{font-size:15px;margin:14px 0 8px}.gameShell .unitServiceRecord p{font-size:13px}.gameShell .unitServiceRecord ol{padding:0;list-style:none}.gameShell .unitServiceRecord li{font-size:13px;padding:10px 0;border-bottom:1px solid var(--ui-border);line-height:1.5}.gameShell .unitServiceRecord small{display:block;font-size:11px;color:var(--ui-muted)}.gameShell .unitBattleHonours{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.gameShell .unitBattleHonours>span{font-size:12px;padding:7px 9px;border:1px solid #796e4d;border-radius:5px;background:#353829;color:#e5d7af;max-width:100%;overflow-wrap:anywhere}.gameShell .unitBattleHonours i{font-style:normal;margin-right:6px}.gameShell .chatTerritoryResults{display:grid;gap:6px;margin:8px 0}.gameShell .chatTerritoryResults button{font-size:12px;text-align:left;min-height:40px}.gameShell .chatRequestTemplates{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0}.gameShell .chatRequestTemplates button{font-size:12px;min-height:40px}.gameShell .chatShareTools>small{font-size:11px;line-height:1.5;display:block;color:var(--ui-muted)}.gameShell .chatShareTools output{font-size:12px;color:#e1bc8d}.gameShell .allianceDispatch{position:fixed;z-index:245;bottom:calc(110px + env(safe-area-inset-bottom));left:16px;right:16px;max-width:430px;box-sizing:border-box;margin:auto;padding:18px 42px 18px 18px;border:1px solid #93a185;border-radius:12px;background:#25382ff5;color:var(--ui-text);box-shadow:0 8px 30px #0005}.gameShell .allianceDispatch>b{font-size:15px;line-height:1.4}.gameShell .allianceDispatch p{font-size:13px;line-height:1.5;color:#d5dfcf;overflow-wrap:anywhere;max-height:80px;overflow:auto}.gameShell .allianceDispatch>div{display:flex;flex-wrap:wrap;gap:8px}.gameShell .allianceDispatch button{min-height:44px;font-size:12px;padding:9px;background:#3b4a3b;color:var(--ui-text);border:1px solid #748368;border-radius:7px}.gameShell .allianceDispatch .dispatchClose{position:absolute;right:5px;top:5px;border:0;background:transparent;width:36px;font-size:20px}.gameShell .unitHistory summary{font-size:14px;min-height:44px;align-content:center}
@media(max-width:350px){.gameShell .unitStackFan{padding:16px}.gameShell .stackFanGrid{gap:8px}.gameShell .stackFanGrid>button{padding:11px}.gameShell .portraitPicker>div{gap:8px}.gameShell .officerCard>header{grid-template-columns:66px minmax(0,1fr);gap:12px}.gameShell .officerCard>header>.officerPortrait{width:66px;height:66px;flex-basis:66px}.gameShell .officerCard>header>.rank-insignia{left:48px}.gameShell .officerCard>header h3{font-size:20px!important}}
@media(prefers-reduced-motion:no-preference){.gameShell .unitStackFan[open] .stackFanGrid>button{animation:stackFanIn .2s ease-out both}.gameShell .unitStackFan[open] .stackFanGrid>button:nth-child(even){animation-delay:.04s}@keyframes stackFanIn{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}}
.gameShell .officerCard>header>.rank-insignia{width:25px!important;height:35px!important;min-width:0!important}.gameShell .officerPromotionBadge>.rank-insignia{width:25px!important;height:36px!important;min-width:0!important}.gameShell .reviewOfficerPortrait{margin:18px 0}
.gameShell .officerCard>header>.rank-insignia,.gameShell .officerPromotionBadge>.rank-insignia{min-height:0!important}

/* Archival dossier prints; rank devices remain separate and current. */
.gameShell .officerPortrait{border-color:#b8a581;border-radius:3px;box-shadow:inset 0 0 0 2px #e4d8bc80,0 1px 3px #0003}
.gameShell .unitOfficer>.officerPortrait.smallPortrait,.gameShell #unitSelectList .unitOfficer>.officerPortrait.smallPortrait{border-radius:2px;box-shadow:inset 0 0 0 1px #e4d8bc90}
.gameShell .portraitPicker label{border-radius:3px}
.gameShell .portraitPicker .officerPortrait{border-color:#b8a581}
