body { font-family: 'Inter', sans-serif; }
.material-symbols-outlined { font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; }

.graph-bg {
    background-image: radial-gradient(#434656 1px, transparent 1px);
    background-size: 40px 40px;
    background-color: #121315;
    cursor: grab;
}
.graph-bg:active { cursor: grabbing; }

/* Prevent browser pull-to-refresh on mobile */
#graphView { touch-action: none; }

.glass-panel {
    background: rgba(52, 53, 55, 0.6);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
}

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

.node-enter { animation: fadeInCenter 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
@keyframes fadeInCenter {
    from { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

#zoomContainer {
    transform-origin: 0 0;
    will-change: transform;
}

/* Splash Screen Animations */
.pulse-slow { animation: pulseLogo 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
@keyframes pulseLogo {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: .7; transform: scale(0.95); }
}
