.world {
    position: relative;
}

.ground {
    position: absolute;
    background: linear-gradient(to bottom, #300f50, #100020);
    animation: groundPulse 10s infinite alternate;
    box-shadow: inset 0 0 50px rgba(255, 0, 255, 0.3);
}

.wall {
    position: absolute;
    background: linear-gradient(45deg, #3a015c, #800080);
    box-shadow: inset 0 0 20px rgba(255, 0, 255, 0.5);
    animation: wallWarp 15s infinite alternate;
    border: 1px solid rgba(255, 0, 255, 0.5);
}

.ceiling {
    position: absolute;
    background: radial-gradient(circle at center, #000000, #200030);
    animation: ceilingTwist 20s infinite;
    box-shadow: 0 0 30px rgba(0, 0, 0, 0.8);
}

.obstacle {
    position: absolute;
    background: conic-gradient(#ff00ff, #00ffff, #ffff00, #ff00ff);
    animation: rotate 5s linear infinite, levitate 3s ease-in-out infinite;
    box-shadow: 0 0 15px rgba(255, 0, 255, 0.7);
    backdrop-filter: hue-rotate(45deg);
}

.special-zone {
    position: absolute;
    background: radial-gradient(ellipse at center, rgba(0, 255, 255, 0.2), rgba(255, 0, 255, 0.4));
    border-radius: 50%;
    animation: pulse 4s infinite, hueRotate 10s linear infinite;
    pointer-events: none;
    border: 2px dashed rgba(255, 255, 255, 0.3);
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.5), inset 0 0 15px rgba(255, 0, 255, 0.6);
}

.portal {
    position: absolute;
    background: conic-gradient(#ff00ff, #00ffff, #ffff00, #ff00ff);
    border-radius: 50%;
    animation: portalSpin 3s linear infinite, portalPulse 4s ease-in-out infinite;
    box-shadow: 0 0 30px rgba(255, 0, 255, 0.8), inset 0 0 20px rgba(0, 255, 255, 0.7);
    backdrop-filter: blur(5px) hue-rotate(90deg);
}

.anomaly {
    position: absolute;
    background-color: transparent;
    border: 2px solid #ff00ff;
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    animation: morphShape 8s ease-in-out infinite, hueRotate 15s linear infinite;
    box-shadow: 0 0 15px #ff00ff, inset 0 0 10px rgba(0, 255, 255, 0.5);
    opacity: 0.7;
    backdrop-filter: invert(20%);
}

.beacon {
    position: absolute;
    width: 15px;
    height: 15px;
    background-color: #00ffff;
    border-radius: 50%;
    box-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #00ffff;
    animation: beaconPulse 2s ease-in-out infinite;
}

.reality-fracture {
    position: absolute;
    background: linear-gradient(135deg, rgba(255, 0, 255, 0.7), transparent);
    clip-path: polygon(0% 15%, 15% 0%, 85% 0%, 100% 15%, 100% 85%, 85% 100%, 15% 100%, 0% 85%);
    animation: fracturePulse 3s ease-in-out infinite alternate;
    mix-blend-mode: screen;
}

.void-particle {
    position: absolute;
    width: 4px;
    height: 4px;
    background-color: #ffffff;
    border-radius: 50%;
    filter: blur(1px);
    opacity: 0.7;
    animation: float 5s infinite linear;
}

.energy-stream {
    position: absolute;
    height: 2px;
    background: linear-gradient(90deg, transparent, #00ffff, #ff00ff, transparent);
    transform-origin: center left;
    animation: streamPulse 2s infinite ease-in-out;
}

@keyframes groundPulse {
    0% { filter: hue-rotate(0deg); }
    50% { filter: hue-rotate(180deg) saturate(150%); }
    100% { filter: hue-rotate(360deg); }
}

@keyframes wallWarp {
    0% { transform: skew(0deg, 0deg); }
    25% { transform: skew(2deg, 1deg); filter: brightness(120%); }
    50% { transform: skew(-1deg, 2deg); filter: brightness(80%) hue-rotate(90deg); }
    75% { transform: skew(-2deg, -1deg); filter: brightness(110%); }
    100% { transform: skew(0deg, 0deg); }
}

@keyframes ceilingTwist {
    0% { transform: rotate(0deg); filter: brightness(100%); }
    50% { transform: rotate(180deg); filter: brightness(70%) contrast(120%); }
    100% { transform: rotate(360deg); filter: brightness(100%); }
}

@keyframes rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes levitate {
    0% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-10px) scale(1.05); }
    100% { transform: translateY(0) scale(1); }
}

@keyframes pulse {
    0% { transform: scale(1); opacity: 0.5; filter: blur(0px); }
    50% { transform: scale(1.2); opacity: 0.8; filter: blur(2px); }
    100% { transform: scale(1); opacity: 0.5; filter: blur(0px); }
}

@keyframes hueRotate {
    0% { filter: hue-rotate(0deg); }
    50% { filter: hue-rotate(180deg) brightness(120%); }
    100% { filter: hue-rotate(360deg); }
}

@keyframes portalSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes portalPulse {
    0% { transform: scale(1) rotate(0deg); box-shadow: 0 0 30px rgba(255, 0, 255, 0.8); }
    50% { transform: scale(1.2) rotate(180deg); box-shadow: 0 0 50px rgba(0, 255, 255, 0.8); }
    100% { transform: scale(1) rotate(360deg); box-shadow: 0 0 30px rgba(255, 0, 255, 0.8); }
}

@keyframes morphShape {
    0%, 100% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
    25% { border-radius: 58% 42% 75% 25% / 76% 46% 54% 24%; border-color: #00ffff; }
    50% { border-radius: 50% 50% 33% 67% / 55% 27% 73% 45%; border-color: #ffff00; }
    75% { border-radius: 33% 67% 58% 42% / 63% 68% 32% 37%; border-color: #ff00ff; }
}

@keyframes beaconPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(1.5); filter: blur(3px); }
}

@keyframes fracturePulse {
    0% { opacity: 0.7; transform: scale(1) rotate(0deg); }
    100% { opacity: 0.9; transform: scale(1.1) rotate(10deg); }
}

@keyframes float {
    0% { transform: translateY(0) translateX(0); }
    25% { transform: translateY(-10px) translateX(5px); }
    50% { transform: translateY(0) translateX(10px); }
    75% { transform: translateY(10px) translateX(5px); }
    100% { transform: translateY(0) translateX(0); }
}

@keyframes streamPulse {
    0%, 100% { opacity: 0.5; width: 70%; }
    50% { opacity: 0.8; width: 90%; }
}

@keyframes shake {
    10%, 90% { transform: translate3d(-1px, 0, 0); }
    20%, 80% { transform: translate3d(2px, 0, 0); }
    30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }
    40%, 60% { transform: translate3d(4px, 0, 0); }
}

