@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Roboto+Mono:wght@400;500&display=swap");@tailwind base;@tailwind components;@tailwind utilities;.hero-gradient{background:linear-gradient(135deg,#f3f4f6,#e5e7eb)}.card-hover:hover{box-shadow:0 10px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.btn-primary{transition:all .3s ease}.btn-primary:hover{opacity:.9;transform:translateY(-2px)}.nav-link{position:relative}.nav-link:after{content:"";position:absolute;bottom:-5px;left:0;width:0;height:2px;background:linear-gradient(90deg,#4f46e5,#7c3aed);transition:width .3s ease}.active-link:after,.nav-link:hover:after{width:100%}.scrollbar-hide::-webkit-scrollbar{display:none}.tag{background-color:#eef2ff;padding:2px 8px}.syntax-highlight{background-color:#f3f4f6;border-radius:.375rem;padding:1rem;overflow-x:auto}.code-comment{color:#6b7280}.code-keyword{color:#7c3aed}.code-string{color:#059669}.code-function{color:#2563eb}.table-container{overflow-x:auto}table{border-collapse:collapse;width:100%}td,th{border:1px solid #e5e7eb;padding:.75rem;text-align:left}th{background-color:#f3f4f6;font-weight:600}tr:nth-child(2n){background-color:#f9fafb}.article-content h2{margin-top:1.5rem;margin-bottom:1rem;font-size:1.5rem;font-weight:600}.article-content h3{margin-top:1.25rem;margin-bottom:.75rem;font-size:1.25rem;font-weight:600}.article-content p{margin-bottom:1rem;line-height:1.7}.article-content ol,.article-content ul{margin-bottom:1rem;padding-left:1.5rem}.article-content li{margin-bottom:.5rem}.article-content pre{margin-bottom:1rem}.article-content blockquote{border-left:4px solid #e5e7eb;padding-left:1rem;margin:1.5rem 0;color:#6b7280}.prose{color:#374151;max-width:65ch;font-size:1.125rem;line-height:1.75}.prose h1,.prose h2,.prose h3,.prose h4{color:#111827;font-weight:700;margin-top:2em;margin-bottom:.8em;line-height:1.3}.prose h1{font-size:2.25em;border-bottom:1px solid #e5e7eb;padding-bottom:.5em}.prose h2{font-size:1.75em}.prose h3{font-size:1.5em}.prose ol,.prose p,.prose ul{margin-top:1.5em;margin-bottom:1.5em}.prose ol,.prose ul{padding-left:1.75em}.prose li{margin-top:.75em;margin-bottom:.75em}.prose blockquote{border-left:4px solid #6366f1;padding-left:1.5rem;margin:2rem 0;color:#4b5563;font-style:italic}.prose code:not([class*=language-]){background-color:#eef2ff;color:#4338ca;padding:.2em .4em;border-radius:.25em;font-family:Roboto Mono,monospace;font-size:.9em}.prose pre{background-color:#1e293b;color:#f8fafc;padding:1.5rem;border-radius:.5rem;overflow-x:auto;margin:2rem 0;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.prose table{width:100%;border-collapse:collapse;margin:2rem 0;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.prose td,.prose th{border:1px solid #e5e7eb;padding:.75rem 1rem;text-align:left}.prose th{background-color:#f3f4f6;font-weight:600}.prose tr:nth-child(2n){background-color:#f9fafb}.tag{background-color:#e0e7ff;color:#4f46e5;padding:.25rem .75rem;border-radius:9999px;font-size:.875rem;transition:all .2s ease}pre[class*=language-]{background:#1e293b!important;border-radius:.5rem;margin:1.5rem 0;padding:1.5rem!important;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}code[class*=language-],pre[class*=language-]{color:#f8fafc!important;text-shadow:none!important;font-family:Roboto Mono,monospace!important;font-size:.9rem!important;line-height:1.5!important}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#94a3b8!important}.token.punctuation{color:#f8fafc!important}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#7dd3fc!important}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#86efac!important}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#f8fafc!important}.token.atrule,.token.attr-value,.token.keyword{color:#93c5fd!important}.token.class-name,.token.function{color:#a5b4fc!important}.token.important,.token.regex,.token.variable{color:#fca5a5!important}:root{--prism-bg:#1e293b;--prism-text:#f8fafc;--prism-comment:#94a3b8}code[class*=language-],pre[class*=language-]{background:var(--prism-bg);color:var(--prism-text)}.gradient-text{background:linear-gradient(90deg,#4f46e5,#7c3aed);-webkit-background-clip:text;background-clip:text;color:transparent}.btn-primary{background:linear-gradient(90deg,#4f46e5,#7c3aed);transition:background .3s ease}.btn-primary:hover{background:linear-gradient(90deg,#4338ca,#6d28d9)}.tag{display:inline-block;padding:.25rem .5rem;background-color:#e5e7eb;color:#374151;font-size:.75rem;font-weight:500;border-radius:.25rem}.card-hover{transition:transform .3s ease,box-shadow .3s ease}.card-hover:hover{transform:translateY(-5px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}