.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
    display: inline-block;
    line-height: 1;
}
.material-symbols-filled {
    font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

.kinetic-gradient {
    background: linear-gradient(135deg, #bd9dff 0%, #ff6f7e 100%);
}

.brand-gradient {
    background: linear-gradient(135deg, #bd9dff 0%, #ffa765 100%);
}

.kinetic-text-gradient {
    background: linear-gradient(135deg, #bd9dff 0%, #ff6f7e 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.glass-card {
    background: rgba(15, 25, 48, 0.4);
    backdrop-filter: blur(20px);
}

.glass-panel {
    backdrop-filter: blur(20px);
    background: rgba(15, 25, 48, 0.7);
}

.reveal-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.7s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.7s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.reveal-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.reveal {
    opacity: 0 !important;
    transform: translateY(40px) !important;
    transition-property: opacity, transform !important;
    transition-duration: 0.7s !important;
    transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1) !important;
}
.reveal.from-left  { transform: translateX(-48px) !important; }
.reveal.from-right { transform: translateX(48px) !important; }
.reveal.visible    { opacity: 1 !important; transform: translate(0, 0) !important; }

.reveal-delay-1 { transition-delay: 0.1s !important; }
.reveal-delay-2 { transition-delay: 0.2s !important; }
.reveal-delay-3 { transition-delay: 0.32s !important; }
.reveal-delay-4 { transition-delay: 0.44s !important; }
.reveal-delay-5 { transition-delay: 0.56s !important; }

.typewriter-cursor {
    border-right: 3px solid #ff6f7e;
    animation: blink 0.75s step-end infinite;
}

@keyframes blink {
    from, to { border-color: transparent; }
    50%       { border-color: #ff6f7e; }
}

@keyframes kineticShift {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}
