@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes loopHorizontally{0%{transform:translate(0)}to{transform:translate(-100%)}}.animate-fade{animation:.5s ease-out forwards fadeIn}.animate-slide{animation:.5s ease-out forwards slideUp}.animate-loop-horizontally{animation:40s linear infinite loopHorizontally}@media (prefers-reduced-motion:reduce){.animate-loop-horizontally{animation-duration:.01ms;animation-iteration-count:1}}.slide-left-slow{will-change:transform;transition:transform .9s}.hover-lift,.hover-scale,.hover-glow,.hover-shine,.hover-ripple{transition:transform .25s,box-shadow .25s,filter .25s;position:relative}.hover-lift:hover,.hover-lift:focus-visible{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.hover-scale:hover,.hover-scale:focus-visible{transform:scale(1.04)}.hover-glow:hover,.hover-glow:focus-visible{box-shadow:var(--shadow-glow);filter:brightness(1.05)}.hover-shine,.hover-ripple{overflow:hidden}.hover-shine:after{content:"";background:linear-gradient(90deg,transparent,var(--shine-color),transparent);opacity:0;border-radius:inherit;pointer-events:none;width:50%;height:200%;transition:transform .6s,opacity .6s;position:absolute;top:-50%;left:-75%;transform:skew(-20deg)}.hover-shine:hover:after,.hover-shine:focus-visible:after{opacity:1;transform:translate(250%)skew(-20deg)}.ripple{background:var(--ripple-color);pointer-events:none;border-radius:50%;animation:.6s ease-out forwards rippleExpand;position:absolute;transform:scale(0)}@keyframes rippleExpand{to{opacity:0;transform:scale(2.5)}}.hover-text-slide{vertical-align:bottom;padding:0;display:inline-block;position:relative;overflow:hidden}.hover-text-slide span{transition:transform .3s cubic-bezier(.76,0,.24,1);display:block}.hover-text-slide:before{content:attr(data-text);transition:transform .3s cubic-bezier(.76,0,.24,1);position:absolute;top:100%;left:0;right:0}.hover-text-slide:hover span,.hover-text-slide:focus-visible span,.hover-text-slide:hover:before,.hover-text-slide:focus-visible:before{transform:translateY(-100%)}
.blog-toc-link{padding:var(--space-xs)var(--space-s);color:var(--text-muted);font-size:var(--text-body-sm);border-left:2px solid #0000;text-decoration:none;transition:color .2s,border-color .2s,background .2s;display:block}.blog-toc-link:hover,.blog-toc-link:focus-visible{color:var(--text-main);background:var(--glass-bg)}.blog-toc-link.active{color:var(--text-main);border-left-color:var(--primary);background:var(--glass-bg)}.blog-toc-link[data-level="3"]{padding-left:var(--space-l)}.blog-toc-list{scrollbar-width:thin;scrollbar-color:var(--text-muted)transparent}.blog-toc-list::-webkit-scrollbar{width:4px}.blog-toc-list::-webkit-scrollbar-track{background:0 0}.blog-toc-list::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:var(--radius-full)}@media (min-width:960px){.blog-sidebar{width:200px;top:calc(var(--nav-offset) + var(--space-l));flex-shrink:0;align-self:flex-start;position:sticky}.blog-main{flex:1;min-width:0}}.blog-content{line-height:var(--line-height-loose)}.blog-content>*+*{margin-top:var(--space-l)}.blog-content h2,.blog-content h3{scroll-margin-top:calc(var(--nav-offset) + var(--space-l))}.blog-content h2{margin-top:var(--space-2xl);margin-bottom:var(--space-m)}.blog-content h3{margin-top:var(--space-xl);margin-bottom:var(--space-s)}.blog-content p,.blog-content ul,.blog-content ol{max-width:70ch}.blog-content ul,.blog-content ol{padding-left:var(--space-l)}.blog-content li{margin-bottom:var(--space-xs)}.blog-content blockquote{border-left:3px solid var(--primary);padding-left:var(--space-l);color:var(--text-muted);margin-left:0;font-style:italic}.blog-content pre,.blog-content code{font-family:var(--font-code);font-size:var(--text-body-sm)}.blog-content code{background:var(--bg-surface-elevated);border-radius:var(--radius-sm);padding:.2em .4em}.blog-content pre{background:var(--bg-surface-elevated);padding:var(--space-m);border-radius:var(--radius-main);border:1px solid var(--border-muted);overflow-x:auto}.blog-content pre code{background:0 0;padding:0}.blog-content img{border-radius:var(--radius-main);max-width:100%;height:auto}

