
@font-face {
    font-family: "Probert";
    src: url("Probert.otf") format("opentype");
}

html, body {
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #02040c;
}

.startup-screen {
    position: relative;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 50%, #123b75 0%, #07152d 35%, #02040c 75%);
}

/* Big glowing light */

.glow {
    position: absolute;
    width: 500px;
    height: 500px;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    background: radial-gradient(
        circle,
        rgba(100, 180, 255, 0.35),
        rgba(20, 80, 160, 0.12),
        transparent 70%
    );
}

/* Flowing PS3-ish waves */

.waves {
    position: absolute;
    width: 160%;
    height: 35%;
    left: -30%;
    border-radius: 50%;
    transform: rotate(-12deg);
    filter: blur(1px);
}

.wave1 {
    top: 35%;
    border-top: 2px solid rgba(100, 190, 255, 0.5);
    box-shadow:
        0 0 20px rgba(70, 160, 255, 0.4),
        0 0 50px rgba(30, 100, 220, 0.2);

    animation: waveMove1 8s ease-in-out infinite;
}

.wave2 {
    top: 43%;
    border-top: 1px solid rgba(160, 220, 255, 0.35);

    animation: waveMove2 10s ease-in-out infinite;
}

.wave3 {
    top: 51%;
    border-top: 1px solid rgba(70, 150, 255, 0.3);

    animation: waveMove3 12s ease-in-out infinite;
}


/* Wave movement */

@keyframes waveMove1 {
    0% {
        transform: rotate(-12deg) translateX(-5%);
    }

    50% {
        transform: rotate(-8deg) translateX(5%);
    }

    100% {
        transform: rotate(-12deg) translateX(-5%);
    }
}

@keyframes waveMove2 {
    0% {
        transform: rotate(-10deg) translateX(5%);
    }

    50% {
        transform: rotate(-15deg) translateX(-5%);
    }

    100% {
        transform: rotate(-10deg) translateX(5%);
    }
}

@keyframes waveMove3 {
    0% {
        transform: rotate(-14deg) translateX(-4%);
    }

    50% {
        transform: rotate(-7deg) translateX(4%);
    }

    100% {
        transform: rotate(-14deg) translateX(-4%);
    }
}

/* Text */

/* Startup logo */

.startup-text {
    position: absolute;
    left: 50%;
    top: 46%;
    transform: translateX(-50%);
    text-align: center;

    font-family: "Probert", sans-serif;
    color: white;

    animation: logoAppear 4.5s ease-in-out infinite;

    z-index: 10;
}

.startup-text h1 {
    font-size: 52px;
    font-weight: 300;

    letter-spacing: 14px;

    margin: 0 0 25px 0;

    text-shadow:
        0 0 5px white,
        0 0 15px rgba(120, 200, 255, 0.9),
        0 0 35px rgba(50, 140, 255, 0.8);
}

.startup-text p {
    font-size: 15px;

    letter-spacing: 4px;

    opacity: 0.75;

    text-shadow:
        0 0 10px rgba(150, 220, 255, 0.8);
}


/* Logo gently fades in and out */

@keyframes logoAppear {

    0% {
        opacity: 0;
        transform: translateX(-50%) translateY(10px);
    }

    25% {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }

    75% {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }

    100% {
        opacity: 0;
        transform: translateX(-50%) translateY(-5px);
    }
}

.startup-text h1 {
    font-size: 42px;
    font-weight: 300;
    letter-spacing: 12px;
    margin: 0 0 20px 0;
}

.startup-text p {
    font-size: 18px;
    opacity: 0.8;
    letter-spacing: 4px;
}


/* Floating particles */


/* Leaving the startup screen */

.startup-screen {
    transition: opacity 0.7s ease;
}

.startup-screen.fade-out {
    opacity: 0;
    pointer-events: none;
}
/* Extra PS3-style waves */

.wave4 {
    top: 28%;
    border-top: 1px solid rgba(130, 200, 255, 0.25);
    animation: waveMove4 14s ease-in-out infinite;
}

.wave5 {
    top: 58%;
    border-top: 2px solid rgba(80, 170, 255, 0.22);
    animation: waveMove5 11s ease-in-out infinite;
}

.wave6 {
    top: 66%;
    border-top: 1px solid rgba(160, 220, 255, 0.2);
    animation: waveMove6 16s ease-in-out infinite;
}

.wave7 {
    top: 20%;
    border-top: 1px solid rgba(90, 180, 255, 0.18);
    animation: waveMove7 18s ease-in-out infinite;
}


/* Extra wave movement */

@keyframes waveMove4 {
    0% {
        transform: rotate(-8deg) translateX(4%);
    }

    50% {
        transform: rotate(-15deg) translateX(-4%);
    }

    100% {
        transform: rotate(-8deg) translateX(4%);
    }
}

@keyframes waveMove5 {
    0% {
        transform: rotate(-16deg) translateX(-5%);
    }

    50% {
        transform: rotate(-9deg) translateX(5%);
    }

    100% {
        transform: rotate(-16deg) translateX(-5%);
    }
}

@keyframes waveMove6 {
    0% {
        transform: rotate(-7deg) translateX(5%);
    }

    50% {
        transform: rotate(-14deg) translateX(-5%);
    }

    100% {
        transform: rotate(-7deg) translateX(5%);
    }
}

@keyframes waveMove7 {
    0% {
        transform: rotate(-15deg) translateX(-3%);
    }

    50% {
        transform: rotate(-5deg) translateX(3%);
    }

    100% {
        transform: rotate(-15deg) translateX(-3%);
    }
}
/* MORE MORE MORE WAVES */

.wave8 {
    top: 12%;
    border-top: 1px solid rgba(120, 200, 255, 0.16);
    animation: waveMove8 13s ease-in-out infinite;
}

.wave9 {
    top: 17%;
    border-top: 1px solid rgba(180, 225, 255, 0.13);
    animation: waveMove9 17s ease-in-out infinite;
}

.wave10 {
    top: 33%;
    border-top: 1px solid rgba(80, 160, 255, 0.18);
    animation: waveMove10 15s ease-in-out infinite;
}

.wave11 {
    top: 39%;
    border-top: 1px solid rgba(180, 230, 255, 0.14);
    animation: waveMove11 19s ease-in-out infinite;
}

.wave12 {
    top: 47%;
    border-top: 1px solid rgba(70, 150, 255, 0.16);
    animation: waveMove12 12s ease-in-out infinite;
}

.wave13 {
    top: 55%;
    border-top: 1px solid rgba(150, 220, 255, 0.15);
    animation: waveMove13 21s ease-in-out infinite;
}

.wave14 {
    top: 72%;
    border-top: 1px solid rgba(80, 170, 255, 0.14);
    animation: waveMove14 16s ease-in-out infinite;
}

.wave15 {
    top: 80%;
    border-top: 1px solid rgba(140, 210, 255, 0.12);
    animation: waveMove15 20s ease-in-out infinite;
}


/* Their movement */

@keyframes waveMove8 {
    0% { transform: rotate(-6deg) translateX(-5%); }
    50% { transform: rotate(-14deg) translateX(5%); }
    100% { transform: rotate(-6deg) translateX(-5%); }
}

@keyframes waveMove9 {
    0% { transform: rotate(-13deg) translateX(4%); }
    50% { transform: rotate(-7deg) translateX(-4%); }
    100% { transform: rotate(-13deg) translateX(4%); }
}

@keyframes waveMove10 {
    0% { transform: rotate(-11deg) translateX(-4%); }
    50% { transform: rotate(-17deg) translateX(4%); }
    100% { transform: rotate(-11deg) translateX(-4%); }
}

@keyframes waveMove11 {
    0% { transform: rotate(-5deg) translateX(5%); }
    50% { transform: rotate(-12deg) translateX(-5%); }
    100% { transform: rotate(-5deg) translateX(5%); }
}

@keyframes waveMove12 {
    0% { transform: rotate(-15deg) translateX(-3%); }
    50% { transform: rotate(-8deg) translateX(3%); }
    100% { transform: rotate(-15deg) translateX(-3%); }
}

@keyframes waveMove13 {
    0% { transform: rotate(-9deg) translateX(3%); }
    50% { transform: rotate(-16deg) translateX(-3%); }
    100% { transform: rotate(-9deg) translateX(3%); }
}

@keyframes waveMove14 {
    0% { transform: rotate(-14deg) translateX(-5%); }
    50% { transform: rotate(-6deg) translateX(5%); }
    100% { transform: rotate(-14deg) translateX(-5%); }
}

@keyframes waveMove15 {
    0% { transform: rotate(-7deg) translateX(4%); }
    50% { transform: rotate(-13deg) translateX(-4%); }
    100% { transform: rotate(-7deg) translateX(4%); }
}
/* Floating glowing particles */

.particles {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 5;
    pointer-events: none;
}

.particles span {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;

    background: rgba(210, 240, 255, 0.9);

    box-shadow:
        0 0 5px rgba(150, 220, 255, 0.9),
        0 0 15px rgba(80, 170, 255, 0.8);

    animation: particleFloat 6s ease-in-out infinite;
}

/* Different positions */

/* Soft PS3-style floating light shapes */

.particles .orb {
    position: absolute;
    border-radius: 50%;

    background:
        radial-gradient(
            circle at 35% 35%,
            rgba(255, 255, 255, 0.45),
            rgba(150, 220, 255, 0.18) 30%,
            rgba(80, 160, 255, 0.06) 55%,
            transparent 70%
        );

    box-shadow:
        0 0 8px rgba(150, 220, 255, 0.2),
        0 0 20px rgba(80, 160, 255, 0.12);

    filter: blur(1px);

    animation: orbFloat 12s ease-in-out infinite;

    z-index: 6;
}


/* Slow floating + appearing */

@keyframes orbFloat {

    0% {
        transform: translate(0, 20px) scale(0.7);
        opacity: 0;
    }

    20% {
        opacity: 0.35;
    }

    50% {
        transform: translate(-25px, -35px) scale(1);
        opacity: 0.7;
    }

    75% {
        opacity: 0.3;
    }

    100% {
        transform: translate(20px, -70px) scale(0.65);
        opacity: 0;
    }
}
/* PS3-style translucent flowing ribbon */

.startup-screen::before {
    content: "";
    position: absolute;

    width: 190%;
    height: 42%;

    left: -45%;
    top: 37%;

    border-radius: 50%;

    border-top: 24px solid rgba(180, 225, 255, 0.14);
    border-bottom: 7px solid rgba(210, 240, 255, 0.16);

    box-shadow:
        0 0 15px rgba(150, 215, 255, 0.16),
        0 0 35px rgba(80, 170, 255, 0.10),
        inset 0 0 20px rgba(180, 230, 255, 0.05);

    transform: rotate(-9deg);

    filter: blur(2px);

    opacity: 1;

    animation: xmbRibbon 14s ease-in-out infinite;

    pointer-events: none;

    z-index: 2;
}

@keyframes xmbRibbon {

    0% {
        transform: rotate(-9deg) translateX(-3%) translateY(0);
    }

    50% {
        transform: rotate(-6deg) translateX(3%) translateY(-12px);
    }

    100% {
        transform: rotate(-9deg) translateX(-3%) translateY(0);
    }
}
/* PS3 avatar */

.ps3-avatar {
    display: block;

    width: 160px;
    height: 160px;

    object-fit: contain;

    margin: 0 auto 18px auto;

    filter:
        drop-shadow(0 0 6px rgba(180, 225, 255, 0.7))
        drop-shadow(0 0 18px rgba(80, 160, 255, 0.4));

    opacity: 0.9;
}
/* Static PS3 logo */

.ps3-logo {
    position: absolute;

    width: 440px;
    height: auto;

    right: 35px;
    bottom: 30px;

    opacity: 0.85;

    filter:
        drop-shadow(0 0 5px rgba(255, 255, 255, 0.6))
        drop-shadow(0 0 14px rgba(100, 190, 255, 0.35));

    z-index: 20;
}