```css
/* ================================================================
   CARD STUFF YES - GLOBAL LOADING SCREEN
   ================================================================ */


/* ================================================================
   PAGE
   ================================================================ */

html {

    box-sizing: border-box;

}


*,
*::before,
*::after {

    box-sizing: inherit;

}


html,
body {

    width: 100%;

    min-height: 100%;

}


body {

    margin: 0;

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    background:
        var(--color-background);

    color:
        var(--color-text);

}


/* ================================================================
   LOADING SCREEN

   This covers the entire browser window.

   It is fixed so that the loading screen remains in place even
   if the page underneath it is scrolling.
   ================================================================ */

.loading-screen {

    position: fixed;

    inset: 0;

    z-index: 99999;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    padding: 24px;

    background:
        var(--color-background);

    color:
        var(--color-text);

    text-align: center;

}


/* ================================================================
   TITLE
   ================================================================ */

.loading-title {

    margin: 0;

    font-size: clamp(28px, 6vw, 48px);

    font-weight: bold;

    letter-spacing: 0.04em;

}


/* ================================================================
   ANIMATED DOTS

   JavaScript changes the text between:

       ""
       "."
       ".."
       "..."

   The container always has a fixed height so the rest of the
   loading screen does not jump around as the dots change.
   ================================================================ */

.loading-dots {

    width: 60px;

    height: 32px;

    margin-top: 10px;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 28px;

    line-height: 1;

    font-weight: bold;

}


/* ================================================================
   NEGINNY

   NegInny rotates continuously while the loading screen is active.
   ================================================================ */

.loading-neginny {

    width: 128px;

    height: 128px;

    margin-top: 24px;

    object-fit: contain;

    user-select: none;

    pointer-events: none;

    animation:
        loading-neginny-spin
        2s
        linear
        infinite;

}


/* ================================================================
   NEGINNY SPIN ANIMATION
   ================================================================ */

@keyframes loading-neginny-spin {

    from {

        transform:
            rotate(0deg);

    }

    to {

        transform:
            rotate(360deg);

    }

}


/* ================================================================
   PROGRESS BAR CONTAINER

   Hidden until JavaScript receives actual progress information.
   ================================================================ */

.loading-progress-container {

    width:
        min(420px, 90vw);

    margin-top: 28px;

}


.loading-progress-container[hidden] {

    display: none;

}


/* ================================================================
   PROGRESS TRACK
   ================================================================ */

.loading-progress-track {

    width: 100%;

    height: 12px;

    overflow: hidden;

    background:
        var(--color-background-tertiary);

    border:
        1px solid var(--color-border);

    border-radius:
        999px;

}


/* ================================================================
   PROGRESS
   ================================================================ */

.loading-progress {

    width: 0%;

    height: 100%;

    background:
        var(--color-button);

    border-radius:
        inherit;

    transition:
        width
        var(--global-transition-speed)
        ease;

}


/* ================================================================
   PROGRESS TEXT
   ================================================================ */

.loading-progress-text {

    margin-top: 8px;

    color:
        var(--color-text-secondary);

    font-size: 14px;

}


/* ================================================================
   DESTINATION

   Displays what the site is currently loading.
   ================================================================ */

.loading-destination {

    margin: 24px 0 0;

    color:
        var(--color-text-secondary);

    font-size: 16px;

}


/* ================================================================
   REDUCED MOTION

   If the user enables "Reduce Movement" in settings, the
   animation is disabled.

   loading.js also respects the browser's reduced-motion setting.
   ================================================================ */

@media (prefers-reduced-motion: reduce) {

    .loading-neginny {

        animation:
            none;

    }

    .loading-progress {

        transition:
            none;

    }

}


/* ================================================================
   SMALL SCREENS
   ================================================================ */

@media (max-width: 600px) {

    .loading-screen {

        padding: 18px;

    }


    .loading-neginny {

        width: 104px;

        height: 104px;

        margin-top: 20px;

    }


    .loading-destination {

        margin-top: 20px;

    }

}
```
