.navlink{padding:.5rem .75rem;border-radius:.75rem}.navlink:hover{background:rgba(99,102,241,.10)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;border-radius:.9rem;background:#4f46e5;color:#fff;padding:.6rem 1rem;font-weight:700;box-shadow:0 10px 25px rgba(79,70,229,.25)}.btn-primary:hover{background:#4338ca}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;border-radius:.9rem;border:1px solid rgba(148,163,184,.35);padding:.6rem 1rem;font-weight:700}.card{border-radius:1.5rem;border:1px solid rgba(148,163,184,.25);background:rgba(255,255,255,.85);box-shadow:0 20px 60px rgba(15,23,42,.06)}.dark .card{background:rgba(15,23,42,.75);border-color:rgba(51,65,85,.9)}.input{width:100%;border-radius:1rem;border:1px solid rgba(148,163,184,.45);background:rgba(255,255,255,.9);padding:.8rem 1rem;outline:none}.dark .input{background:rgba(15,23,42,.8);border-color:rgba(51,65,85,.9)}.label{display:block;font-weight:700;font-size:.9rem;margin-bottom:.4rem}.small{font-size:.875rem;color:#64748b}.dark .small{color:#94a3b8}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.25rem .65rem;font-size:.75rem;font-weight:700;background:rgba(99,102,241,.12);color:#4338ca}.dark .badge{color:#c7d2fe}

/* SEO article readability: do not rely on Tailwind Typography plugin. */
.article-shell{max-width:1180px;margin:0 auto}.article-hero{position:relative;overflow:hidden}.article-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 0%,rgba(99,102,241,.18),transparent 34%),radial-gradient(circle at 85% 10%,rgba(14,165,233,.13),transparent 32%);pointer-events:none}.article-hero>*{position:relative}.article-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem}.article-body{font-size:1.0625rem;line-height:1.9;color:#334155}.dark .article-body{color:#cbd5e1}.article-body h2{scroll-margin-top:6rem;margin-top:3rem;margin-bottom:1rem;font-size:1.85rem;line-height:1.2;font-weight:900;letter-spacing:-.025em;color:#0f172a}.dark .article-body h2{color:#fff}.article-body h2:first-child{margin-top:0}.article-body h3{margin-top:2rem;margin-bottom:.75rem;font-size:1.35rem;line-height:1.3;font-weight:850;color:#111827}.dark .article-body h3{color:#f8fafc}.article-body p{margin:1.1rem 0}.article-body a{font-weight:800;color:#4f46e5;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.article-body a:hover{color:#3730a3}.dark .article-body a{color:#a5b4fc}.article-body ul,.article-body ol{margin:1.25rem 0 1.25rem 1.5rem}.article-body li{margin:.5rem 0}.article-body ul{list-style:disc}.article-body ol{list-style:decimal}.article-body blockquote{margin:1.8rem 0;padding:1rem 1.25rem;border-left:4px solid #6366f1;background:#eef2ff;border-radius:0 1rem 1rem 0;color:#334155}.dark .article-body blockquote{background:rgba(49,46,129,.35);color:#dbeafe}.article-body section{margin-top:2rem}.article-body section.rounded-2xl{border:1px solid rgba(99,102,241,.18)}.article-meta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.25rem}.article-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.35rem .7rem;background:#f1f5f9;color:#475569;font-weight:800;font-size:.78rem}.dark .article-pill{background:#1e293b;color:#cbd5e1}.toc-card{position:sticky;top:6.5rem}.toc-card a{display:block;padding:.45rem .6rem;border-radius:.75rem;color:#475569;font-weight:700}.toc-card a:hover{background:#eef2ff;color:#4338ca}.dark .toc-card a{color:#cbd5e1}.dark .toc-card a:hover{background:rgba(99,102,241,.18);color:#c7d2fe}.related-card{transition:transform .15s ease,box-shadow .15s ease}.related-card:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(15,23,42,.10)}@media (min-width:1024px){.article-grid{grid-template-columns:minmax(0,780px) 320px;align-items:start}.article-body{font-size:1.095rem}}
