/* Custom CSS for transitions and utility components */

body::-webkit-scrollbar {
    display: none;
}

body {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

canvas {
    outline: none;
}

/* Custom slider aesthetics */
input[type=range].environmental-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].environmental-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 10px;
    width: 10px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    margin-top: -4px;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
}

input[type=range].environmental-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 2px;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.2);
    border-radius: 1px;
}

/* Modals & Overlays */
.glass-panel {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

/* 3D World Labels */
.world-label {
    position: absolute;
    transform: translate(-50%, -50%);
    pointer-events: none;
    transition: opacity 0.3s;
    z-index: 10;
}

.world-label.clickable {
    pointer-events: auto;
    cursor: pointer;
    transition: transform 0.2s, opacity 0.3s;
}

.world-label.clickable:hover {
    transform: translate(-50%, -50%) scale(1.1) !important;
    /* overrides JS inline scale slightly */
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }
}

.float-animation {
    animation: float 3s ease-in-out infinite;
}

/* Key caps */
.key-cap {
    box-shadow: 0 3px 0 rgba(139, 92, 246, 0.4);
    transition: all 0.1s;
}

.key-cap:active,
.key-cap.pressed {
    transform: translateY(3px);
    box-shadow: 0 0 0 rgba(139, 92, 246, 0);
    background: linear-gradient(135deg, #06b6d4, #8b5cf6);
    color: white;
}