@keyframes ihub-pattern-drift{0%{background-position:0 0,30px 30px}to{background-position:60px 60px,90px 90px}}@keyframes ihub-pulse-subtle{0%,to{opacity:.6}50%{opacity:1}}.ihub-hero-pattern{background-color:hsl(var(--primary)/.05);background-image:radial-gradient(circle,hsl(var(--primary)/.1) 1.5px,transparent 1.5px),radial-gradient(circle,hsl(var(--primary)/.06) 1px,transparent 1px);background-size:40px 40px,20px 20px;background-position:0 0,30px 30px;animation:ihub-pattern-drift 20s linear infinite}.ihub-hero-pattern-label{animation:ihub-pulse-subtle 4s ease-in-out infinite}.blog-content{font-size:1.0625rem;line-height:1.8;color:hsl(var(--muted-foreground))}.blog-content :not(code):not(pre):not(kbd){font-family:var(--font-roboto),system-ui,-apple-system,sans-serif!important}.blog-content div,.blog-content li,.blog-content p,.blog-content td,.blog-content th{text-align:left!important}.blog-content li span,.blog-content p span,.blog-content td span{font-size:inherit!important;line-height:inherit!important}.blog-content div[style],.blog-content p[style]{margin-top:0!important}.blog-content .MsoBodyText,.blog-content .MsoNormal,.blog-content [class*=" Mso"],.blog-content [class^=Mso]{margin:0 0 1.25rem!important;text-align:left!important;font-size:inherit!important;line-height:1.85!important}.blog-content .MsoListParagraph,.blog-content [class*=MsoListParagraph]{position:relative!important;padding-left:1.75rem!important;margin-left:0!important;margin-bottom:.375rem!important;text-align:left!important;font-size:inherit!important;line-height:1.85!important}.blog-content .MsoListParagraph:before,.blog-content [class*=MsoListParagraph]:before{content:"•";position:absolute;left:.375rem;color:hsl(var(--primary));font-weight:900}.blog-content h1,.blog-content h2,.blog-content h3,.blog-content h4,.blog-content h5,.blog-content h6{font-weight:700;letter-spacing:-.02em;color:var(--foreground);margin-bottom:.75rem}.blog-content h2{font-size:1.75rem;margin-top:3.5rem;margin-bottom:1.25rem;padding-bottom:.625rem;border-bottom:2px solid hsl(var(--border))}.blog-content h3{font-size:1.375rem;margin-top:2.5rem;margin-bottom:.875rem;color:hsl(var(--primary))}.blog-content h4{font-size:1.125rem;margin-top:2rem;margin-bottom:.625rem}.blog-content p{margin-bottom:1.25rem;color:hsl(var(--muted-foreground));line-height:1.85;text-align:left!important}.blog-content p:empty,.blog-content p>br:only-child{margin:0;line-height:0;height:0}.blog-content p>b:only-child,.blog-content p>strong:only-child{display:block;font-size:1rem;font-weight:700;color:var(--foreground);margin-bottom:-.5rem}.blog-content a{color:hsl(var(--primary));font-weight:500;text-decoration:none;border-bottom:1px solid hsl(var(--primary)/.3);transition:all .2s ease-in-out}.blog-content a:hover{border-bottom-color:hsl(var(--primary));color:hsl(var(--primary)/.8)}.blog-content b,.blog-content strong{color:hsl(var(--foreground));font-weight:600}.blog-content em,.blog-content i{font-style:italic}.blog-content span[style]{font-size:inherit}.blog-content ol,.blog-content ul{margin:1.5rem 0;padding-left:1.75rem}.blog-content ul{list-style-type:disc}.blog-content ol{list-style-type:decimal}.blog-content ul>li{list-style-type:disc!important}.blog-content ol>li{list-style-type:decimal!important}.blog-content li{margin:.5rem 0;color:hsl(var(--muted-foreground));line-height:1.75;text-align:left}.blog-content li::marker{color:hsl(var(--primary))}.blog-content ol ol,.blog-content ol ul,.blog-content ul ol,.blog-content ul ul{margin:.375rem 0}.blog-content blockquote{margin:2.5rem 0;padding:1.25rem 1.75rem;background:hsl(var(--primary)/.05);border-left:4px solid hsl(var(--primary));border-radius:0 .5rem .5rem 0;font-style:italic;color:hsl(var(--muted-foreground))}.blog-content blockquote p{margin-bottom:0}.blog-content code{background:hsl(var(--primary)/.1);color:hsl(var(--primary));padding:.125rem .5rem;border-radius:.25rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem}.blog-content pre{background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:.5rem;padding:1.5rem;margin:2rem 0;overflow-x:auto}.blog-content pre code{background:transparent;padding:0;color:hsl(var(--foreground));font-size:.875rem;line-height:1.6}.blog-content img{max-width:100%;height:auto;border-radius:.75rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);margin:2rem auto;display:block}.blog-content figure{margin:2rem 0}.blog-content figcaption{margin-top:.5rem;font-size:.875rem;color:hsl(var(--muted-foreground));text-align:center;font-style:italic}.blog-content hr{border:none;border-top:2px solid hsl(var(--border));margin:3rem 0}.blog-content table{width:100%;border-collapse:collapse;margin:2rem 0;font-size:.9375rem;border-radius:.5rem;overflow:hidden}.blog-content thead{background:hsl(var(--muted));border-bottom:2px solid hsl(var(--border))}.blog-content th{font-weight:600;color:hsl(var(--foreground))}.blog-content td,.blog-content th{padding:.875rem 1rem;text-align:left}.blog-content td{border-bottom:1px solid hsl(var(--border));color:hsl(var(--muted-foreground))}.blog-content tbody tr:hover{background:hsl(var(--muted)/.5)}.blog-content abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help}.blog-content mark{background:hsl(var(--primary)/.15);color:hsl(var(--foreground));padding:.125rem .25rem;border-radius:.125rem}.blog-content kbd{background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;box-shadow:0 1px 2px rgba(0,0,0,.1)}@media (max-width:768px){.blog-content{font-size:1rem}.blog-content h2{font-size:1.375rem;margin-top:2.5rem}.blog-content h3{font-size:1.125rem;margin-top:2rem}.blog-content h4{font-size:1rem;margin-top:1.5rem}.blog-content pre{padding:1rem}}@media print{.blog-content{color:#000}.blog-content a{color:#000;text-decoration:underline;border:none}.blog-content code{background:#f5f5f5;color:#000}.blog-content pre{border:1px solid #ccc;background:#f5f5f5}}