html, body {
    height: 100%;
    margin: 0;
}

body {
    background: radial-gradient(ellipse 75% 65% at 50% 40%, #2c3d5c 0%, #141b2b 55%, #07090f 100%) #07090f;

    display: flex;
    flex-direction: column;
    align-items: center;

    overflow: hidden;
}

.clanker {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    object-fit: contain;
    /* on tall phone screens, keep the robot standing just above the text */
    object-position: 50% 100%;

    box-sizing: border-box;
    /* leave room so the text sits over the floor, not over the robot */
    padding: 3vh 4vw clamp(48px, 13vw, 150px);
}

.text {
    color: white;
    font-family: "Arial Black", Impact, system-ui, sans-serif;
    font-weight: 900;
    font-size: clamp(24px, 8vw, 110px);
    letter-spacing: 0.45em;
    /* letter-spacing also trails the last letter; pad the front to stay centred */
    padding-left: 0.45em;
    white-space: nowrap;
    text-shadow: 0 0 24px rgba(127, 247, 255, 0.35), 0 4px 18px rgba(0, 0, 0, 0.7);

    position: absolute;
    bottom: 2vh;
}

/* Same wobble as getrekkert.nl: shake left/right, blur at the extremes */
.shake {
    animation: shake 0.82s cubic-bezier(.36, .07, .19, .97) both infinite;
    transform: translate3d(0, 0, 0);
    backface-visibility: hidden;
    perspective: 1000px;
}

@keyframes shake {
    10%, 90% {
        transform: translate3d(-2px, 0, 0);
    }

    20%, 80% {
        transform: translate3d(4px, 0, 0);
        filter: blur(5px);
    }

    30%, 50%, 70% {
        transform: translate3d(-8px, 0, 0);
    }

    40%, 60% {
        transform: translate3d(8px, 0, 0);
        filter: blur(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .shake {
        animation: none;
    }
}
