.page-loader {
    position: fixed;
    z-index: 100000;
    inset: 0;
    display: grid;
    place-items: center;
    min-height: 100dvh;
    padding: 1.5rem;
    color: #271336;
    background:
        radial-gradient(circle at 50% 42%, rgba(255, 255, 255, .98) 0 18rem, rgba(250, 247, 252, .96) 34rem),
        #faf7fc;
    text-align: center;
    transition: opacity .18s ease, visibility .18s ease;
}

.page-loader[hidden] {
    display: none;
}

.page-loader.page-loader--transparent {
    background: rgba(8, 35, 63, .2);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.page-loader__panel {
    width: min(100%, 28rem);
}

.page-loader__logo {
    display: block;
    width: clamp(12rem, 48vw, 20rem);
    height: auto;
    margin: 0 auto;
}

.page-loader__message {
    margin: .25rem 0 0;
    color: #624f6e;
    font: 600 1rem/1.5 "DM Sans", "Segoe UI", sans-serif;
}

.page-loader__problem {
    max-width: 25rem;
    margin: 1.25rem auto 0;
    padding: 1.1rem 1.2rem;
    border: 1px solid #e4d9e9;
    border-radius: 1rem;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 1rem 3rem rgba(66, 16, 95, .12);
}

.page-loader__problem[hidden] {
    display: none;
}

.page-loader__problem strong {
    display: block;
    color: #42105f;
    font: 800 1.05rem/1.35 "Manrope", "Segoe UI", sans-serif;
}

.page-loader__problem p {
    margin: .45rem 0 1rem;
    color: #65566d;
    font: 400 .94rem/1.55 "DM Sans", "Segoe UI", sans-serif;
}

.page-loader__refresh {
    min-height: 2.75rem;
    padding: .7rem 1.2rem;
    border: 0;
    border-radius: .8rem;
    color: #fff;
    background: #42105f;
    box-shadow: 0 .55rem 1.2rem rgba(66, 16, 95, .2);
    font: 700 .94rem/1 "DM Sans", "Segoe UI", sans-serif;
    cursor: pointer;
}

.page-loader__refresh:hover {
    background: #58187a;
}

.page-loader__refresh:focus-visible {
    outline: 3px solid #ffc400;
    outline-offset: 3px;
}

body.page-loader-active {
    overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .page-loader {
        transition: none;
    }
}
