* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    background: #000;
    overflow-x: hidden;
    color: #FFFFFF;
    font-family: monospace;
    width: 100%;
    min-height: 100vh;
    perspective: 2000px;
    perspective-origin: 180% 150%;
}

body::after {
    content: '';
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    z-index: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Ccircle cx='17' cy='34' r='0.8' fill='white'/%3E%3Ccircle cx='53' cy='12' r='0.6' fill='white'/%3E%3Ccircle cx='89' cy='67' r='1' fill='white'/%3E%3Ccircle cx='134' cy='23' r='0.7' fill='white'/%3E%3Ccircle cx='172' cy='89' r='0.5' fill='white'/%3E%3Ccircle cx='7'  cy='91' r='0.9' fill='white'/%3E%3Ccircle cx='43' cy='145' r='0.6' fill='white'/%3E%3Ccircle cx='78' cy='112' r='1.1' fill='white'/%3E%3Ccircle cx='112' cy='178' r='0.7' fill='white'/%3E%3Ccircle cx='156' cy='134' r='0.5' fill='white'/%3E%3Ccircle cx='191' cy='56' r='0.8' fill='white'/%3E%3Ccircle cx='29' cy='189' r='0.6' fill='white'/%3E%3Ccircle cx='67' cy='156' r='1'   fill='white'/%3E%3Ccircle cx='101' cy='43' r='0.5' fill='white'/%3E%3Ccircle cx='145' cy='98' r='0.9' fill='white'/%3E%3Ccircle cx='183' cy='167' r='0.7' fill='white'/%3E%3Ccircle cx='23' cy='78' r='0.5' fill='white'/%3E%3Ccircle cx='59' cy='123' r='1.2' fill='white'/%3E%3Ccircle cx='94' cy='189' r='0.6' fill='white'/%3E%3Ccircle cx='128' cy='56' r='0.8' fill='white'/%3E%3Ccircle cx='167' cy='12' r='0.5' fill='white'/%3E%3Ccircle cx='197' cy='134' r='1'   fill='white'/%3E%3Ccircle cx='11' cy='167' r='0.7' fill='white'/%3E%3Ccircle cx='48' cy='34' r='0.6' fill='white'/%3E%3Ccircle cx='83' cy='98' r='0.9' fill='white'/%3E%3Ccircle cx='119' cy='145' r='0.5' fill='white'/%3E%3Ccircle cx='161' cy='67' r='1.1' fill='white'/%3E%3Ccircle cx='188' cy='23' r='0.7' fill='white'/%3E%3Ccircle cx='35' cy='112' r='0.6' fill='white'/%3E%3Ccircle cx='72' cy='178' r='0.8' fill='white'/%3E%3C/svg%3E");
    background-repeat: repeat;
    background-size: 200px 200px;
}

.stars {
    position: fixed;
    top: 0; left: 0;
    width: 100vw;
    height: 100vh;
    transform-style: preserve-3d;
    animation: rotate 190s linear infinite;
    z-index: 0;
    will-change: transform;
}

@keyframes rotate {
    from { transform: rotateY(0deg); }
    to   { transform: rotateY(360deg); }
}

.star {
    position: absolute;
    top: 100%;
    left: 50%;
    width: 2px;
    height: 2px;
    background: white;
    border-radius: 50%;
    transform-style: preserve-3d;
}

article {
    padding: 2ch;
    margin: 2ch auto;
    max-width: 800px;
    border-bottom: 1px solid #333;
    position: relative;
    z-index: 1;
}
