.will-animate{will-change:transform,opacity}.will-animate-gpu{will-change:transform;transform:translateZ(0);backface-visibility:hidden}@keyframes ripple{0%{width:10px;height:10px;opacity:1}to{width:400px;height:400px;opacity:0}}.ripple-element{animation:ripple .6s ease-out}.animate-stagger-children>*{animation:cascade-in .5s ease-out backwards}.animate-stagger-children>:first-child{animation-delay:0s}.animate-stagger-children>:nth-child(2){animation-delay:.1s}.animate-stagger-children>:nth-child(3){animation-delay:.2s}.animate-stagger-children>:nth-child(4){animation-delay:.3s}.animate-stagger-children>:nth-child(5){animation-delay:.4s}.animate-stagger-children>:nth-child(6){animation-delay:.5s}.animate-stagger-children>:nth-child(n+7){animation-delay:.6s}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.glow-primary{box-shadow:0 0 20px rgba(59,130,246,.3)}.glow-accent{box-shadow:0 0 20px rgba(0,200,200,.3)}.glow-pulse{animation:pulse-glow 2s infinite}.shimmer-background{background:linear-gradient(90deg,hsl(var(--muted)) 25%,hsl(var(--muted)) 50%,hsl(var(--muted)) 75%);background-size:200% 100%;animation:shimmer 2s infinite}@supports (animation-timeline:view()){.fade-on-scroll{opacity:0;animation:fade-in linear;animation-timeline:view()}}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px}*{transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}html{overflow-y:scroll}img{transition:transform .3s ease-out}::selection{background-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:hsl(var(--muted))}::-webkit-scrollbar-thumb{background:hsl(var(--primary));border-radius:5px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--primary)/.8)}*{scrollbar-color:hsl(var(--primary)) hsl(var(--muted));scrollbar-width:thin}.blog-content a,.prose a,article a{position:relative;text-decoration:none}.blog-content a:after,.prose a:after,article a:after{content:"";position:absolute;width:0;height:2px;bottom:-4px;left:0;background-color:hsl(var(--primary));transition:width .3s ease-out}.blog-content a:hover:after,.prose a:hover:after,article a:hover:after{width:100%}[role=button],button{line-height:1.2;min-height:44px;min-width:44px}