def civil_twilight(topos, earth, sun, time):
    """Determine if the observer at a topos is in civil twilight
    or darker.

    Civil twilight is defined as the Sun being at least 6 degrees below 
    the local horizon.

    Args:
        topos: A skyfield.toposlib.Topos object.
        earth: A vector (obtained by loading an ephemeris file) supporting
            the calculation of the position of Earth relative to
            the Solar System barycenter.
        sun: A vector (obtained by loading an ephemeris file) supporting
            the calculation of the position of the Sun relative to
            the Solar System barycenter.
        time: A skyfield.api.Time object.

    Returns:
        True if the observer at the given topos is in civil twilight
            or darker, False otherwise.
    """

    location = earth + topos
    astrocentric = location.at(time).observe(sun).apparent()
    alt, _, _ = astrocentric.altaz('standard')
    return alt.degrees <= -6.0