/* Approved Carrier pixels and role-owned inner depth. World/recovery/Warp
   transforms remain outside this visual; every new volume layer is static. */
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapVisual {
  position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible;
  pointer-events: none; transform-origin: 50% 54%; animation: fapHover 6.4s ease-in-out infinite;
}
img.fapHull {
  -webkit-mask: url("/assets/carriers-v6300/fighter-neutral-mask.svg") center/contain no-repeat !important;
  mask: url("/assets/carriers-v6300/fighter-neutral-mask.svg") center/contain no-repeat !important;
  mask-mode: alpha;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapUnderlight,
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapHullLighting,
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapHullVolume {
  position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible;
  pointer-events: none;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapUnderlight { z-index: 1; opacity: .6; animation: fapUnderlight 5.6s ease-in-out infinite; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapHullVolume { z-index: 3; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapHullLighting { z-index: 3; animation: fapPortBreath 4.8s ease-in-out infinite; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierEffectsV6300 { z-index: 4; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierFlagsLayerV6300 { display: none !important; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapPortSpill { opacity: .8; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapPortRing { fill: none; stroke: #93dcff; stroke-width: 2.3; opacity: .55; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapPortLens { fill: #329ee8; opacity: .64; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapPortHot { fill: #d8f4ff; opacity: .84; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapEnginePort { opacity: 1; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapBlueAccents { stroke: #acddf2; stroke-width: 3; opacity: .67; filter: drop-shadow(0 0 2px #69bee080); }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapAccentFine { stroke-width: 1.7; opacity: .65; }
/* Blue cores remain lit; the directional fire exists only while the game reports movement. */
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierThrusterV6300 {
  border-color: #9adfff44; background: radial-gradient(circle,#aae4ff2a,transparent 70%);
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierEffectsV6300[data-moving="true"] .carrierThrusterV6300 {
  background: radial-gradient(circle,#e4f8ff,#6dcbfb90 38%,transparent 74%); box-shadow: 0 0 7px #70ccef;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapVisual:has(.carrierEffectsV6300[data-moving="true"]) .fapPortLens { opacity: .88; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierShieldV6300 {
  inset: -6% -11%; border-radius: 49%;
  border: 1px solid rgb(170 225 244 / calc(.14 + var(--shield-strength,0) * .32));
  background: radial-gradient(ellipse at 34% 25%,#c8f2ff0a,transparent 38%),
    radial-gradient(ellipse,transparent 55%,rgb(131 210 242 / calc(var(--shield-strength,0) * .08)) 69%,transparent 74%);
  box-shadow: inset 0 0 11px #9bdff019,0 0 8px #9bdff019;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldSkin {
  position: absolute; inset: 0; overflow: hidden; border-radius: inherit; pointer-events: none;
  opacity: calc(.24 + var(--shield-strength,0) * .65);
  -webkit-mask-image: radial-gradient(ellipse,transparent 58%,#000 63%,#000 69%,transparent 73%);
  mask-image: radial-gradient(ellipse,transparent 58%,#000 63%,#000 69%,transparent 73%);
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldSweep {
  position: absolute; inset: -38%;
  background: conic-gradient(from 20deg,transparent 0deg,#97def100 265deg,#c3f2ff9e 316deg,#eefcff99 327deg,transparent 343deg);
  animation: fapShieldSweep 9.5s linear infinite;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldSweepReturn { opacity: .26; animation: none; transform: rotate(150deg); }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldField { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; opacity: calc(.2 + var(--shield-strength,0) * .65); }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldOrbit { stroke: #bcefff; stroke-width: .22; stroke-dasharray: .7 17; opacity: .38; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldParticle { fill: #dcf7ff; opacity: .48; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierShieldV6300[data-state="stressed"] { border-style: dashed; border-color: #a3c6d480; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierShieldV6300[data-state="offline"] { opacity: 0; visibility: hidden; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierShieldV6300.shieldImpactV6300:not([data-state="offline"]) {
  background: radial-gradient(ellipse at 35% 25%,#e3faff88,transparent 58%); box-shadow: 0 0 23px #a8ebff77;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive .carrierShieldRippleV6300 { z-index: 3; border-color: #e0f8ff; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:is(.carrierWreckV6300,.carrierRecoveringV6300,.carrierCapturedV6300,.carrierRemoteCapturedV6318,.wjAbsent) .fapVisual { animation: none !important; transform: none !important; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:is(.carrierWreckV6300,.carrierRecoveringV6300,.carrierCapturedV6300,.carrierRemoteCapturedV6318,.wjAbsent) :is(.fapUnderlight,.fapHullLighting,.fapHullVolume,.fapShieldSkin,.fapShieldField) { display: none !important; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:is(.carrierWreckV6300,.carrierRecoveringV6300,.carrierCapturedV6300,.carrierRemoteCapturedV6318,.wjAbsent) .fxpJet * { animation-play-state: paused !important; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive[data-fap-paused="true"] :is(.fapVisual,.fapUnderlight,.fapHullLighting,.fapEnginePort,.fapShieldSweep,.fapShieldParticle,.fapShieldOrbit) { animation-play-state: paused !important; }
@keyframes fapHover { 0%,100% { transform: translate3d(0,-1.7px,0); } 50% { transform: translate3d(0,1.7px,0); } }
@keyframes fapUnderlight { 0%,100% { opacity: .48; } 50% { opacity: .68; } }
@keyframes fapPortBreath { 0%,100% { opacity: .8; } 50% { opacity: 1; } }
@keyframes fapShieldSweep { to { transform: rotate(360deg); } }
@keyframes fapShieldOrbit { to { stroke-dashoffset: -106; } }
@keyframes fapShieldParticle { 0%,100% { opacity: .16; } 45%,60% { opacity: .82; } }
@media (prefers-reduced-motion: reduce) {

  :is(#carrier,.onlinePlayerCarrierV62833).fapActive :is(.fapVisual,.fapUnderlight,.fapHullLighting,.fapEnginePort,.fapShieldSweep,.fapShieldParticle,.fapShieldOrbit) { animation: none; }
  :is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapVisual { transform: none; }
  :is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapShieldSweep { opacity: .35; }
}

:is(#carrier,.onlinePlayerCarrierV62833).fapActive .fapVisual > img.fapHull {
  position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important;
  object-fit: contain !important; transform: none !important; animation: none !important;
  filter: drop-shadow(0 5px 6px #0008) !important; z-index: 2;
}
/* An explicit saved-origin choice colors only the approved hull and bevel.
   Green underlights, blue cores and red/blue exhaust keep their own colors. */
:is(#carrier,.onlinePlayerCarrierV62833).fapActive[data-fap-theme="purple"] {
  --fap-rim: #d8c0ff; --fap-light: #f0e1ff;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive[data-fap-theme="purple"] .fapVisual > img.fapHull {
  filter: hue-rotate(68deg) saturate(1.25) drop-shadow(0 5px 6px #0008) !important;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive[data-fap-paused="true"] :is(.carrierShieldV6300,.carrierShieldRippleV6300) { animation-play-state: paused !important; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.carrierWreckV6300 .fapVisual > img.fapHull { filter: grayscale(.7) brightness(.48) drop-shadow(0 0 6px #f1773377) !important; }

/* Approved short exhaust; mounted and removed with each role's lifecycle. */
.playerPlanetBadgeV6268.playerOriginBadgeV6360 {
  display:inline-block;flex:0 0 auto;width:16px;height:20px;vertical-align:middle;
  background:transparent url('/assets/menu-icons/fuel-city-crystal.png') center/contain no-repeat;
  border:0;border-radius:0;box-shadow:none;
}
.playerPlanetBadgeV6268.playerOriginBadgeV6360[data-origin-planet="drone"] {
  background-image:url('/assets/drone-planet-v1/drone-badge.svg');
}
.playerPlanetBadgeV6268.playerOriginBadgeV6360::before,
.playerPlanetBadgeV6268.playerOriginBadgeV6360::after {content:none;display:none;}
.playerOriginBadgeV6360 .playerPlanetSurfaceV6268 {display:none;}
#carrier .unitLabel .playerOriginBadgeV6360 {width:16px;height:20px;}
.onlinePlayerNameV62833.playerNameWithPlanetV6268 {display:flex;align-items:center;justify-content:center;gap:4px;}

.fxpJet { display: none; pointer-events: none; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .carrierThrusterV6300 b {
  display: none !important; width: 178% !important; height: 100% !important;
  top: 0 !important; right: 46% !important; opacity: 0 !important;
  background: transparent !important; box-shadow: none !important; filter: none !important;
  border-radius: 0 !important; clip-path: none !important; overflow: visible !important;
  transform: none !important; animation: none !important; transition: none !important;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .carrierThrusterV6300 b::before,
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .carrierThrusterV6300 b::after {
  content: none !important; display: none !important; animation: none !important;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview:not(:is(.carrierWreckV6300,.carrierRecoveringV6300,.carrierCapturedV6300,.carrierRemoteCapturedV6318,.wjAbsent)) .carrierEffectsV6300[data-moving="true"] .carrierThrusterV6300 b {
  display: block !important; opacity: 1 !important;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpJet {
  position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpPlume {
  transform-box: view-box; transform-origin: 173px 50px;
  animation: fxpVolumeBreath .31s ease-in-out infinite;
  animation-delay: var(--fxp-phase,0s);
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpHaze { display: none; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpVolume { opacity: .94; filter: none; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpInnerCore {
  opacity: .88; filter: none;
  animation-delay: var(--fxp-phase,0s);
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpNozzleGlow {
  opacity: .85;
  animation-delay: var(--fxp-phase,0s);
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpNozzleCore { opacity: .88; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpSpark {
  opacity: 0; animation: fxpSpark .87s linear infinite;
  animation-delay: var(--fxp-phase,0s); transform-box: view-box;
}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpSparkTwo { display: none; animation: none; }
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpSparkThree { display: none; animation: none; }
/* This must win against every moving animation shorthand, including paused browser tabs. */
:is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview[data-fap-paused="true"] .fxpJet * { animation-play-state: paused !important; }
@keyframes fxpVolumeBreath {
  0%,100% { transform: scale(.97,.98); opacity: .89; }
  27% { transform: scale(1.035,1.035); opacity: 1; }
  62% { transform: scale(.92,.96); opacity: .91; }
  82% { transform: scale(1.01,1.015); opacity: .98; }
}
@keyframes fxpCoreFlicker { from { opacity: .72; } to { opacity: 1; } }
@keyframes fxpNozzlePulse { from { opacity: .75; } to { opacity: .94; } }
@keyframes fxpSpark {
  0%,14% { transform: translate(0,0); opacity: 0; }
  24% { opacity: .74; }
  76% { opacity: .2; }
  100% { transform: translate(-37px,-3px); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  :is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpJet * { animation: none !important; }
  :is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpPlume { transform: none; }
  :is(#carrier,.onlinePlayerCarrierV62833).fapActive.fxpExhaustPreview .fxpSparks { display: none; }
}

/* Level paint overrides origin paint; wreck damage styling remains authoritative.
   Keep Drone's approved purple starter hull, and its badge at every level. */
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:not(.carrierWreckV6300)[data-fap-tier="1"]:not([data-fap-theme="purple"]) .fapVisual>img.fapHull{filter:hue-rotate(285deg) saturate(1.45) drop-shadow(0 5px 6px #0008)!important}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:not(.carrierWreckV6300)[data-fap-tier="2"] .fapVisual>img.fapHull{filter:saturate(1.55) drop-shadow(0 5px 6px #0008)!important}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:not(.carrierWreckV6300)[data-fap-tier="3"] .fapVisual>img.fapHull{filter:grayscale(1) brightness(.46) contrast(1.25) drop-shadow(0 5px 6px #0008)!important}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:not(.carrierWreckV6300)[data-fap-tier="4"] .fapVisual>img.fapHull{filter:hue-rotate(155deg) saturate(1.85) drop-shadow(0 5px 6px #0008)!important}
:is(#carrier,.onlinePlayerCarrierV62833).fapActive:not(.carrierWreckV6300)[data-fap-tier="5"] .fapVisual>img.fapHull{filter:hue-rotate(190deg) saturate(1.85) drop-shadow(0 5px 6px #0008)!important}
