.col[data-astro-cid-jvxsf75u]{max-width:700px;margin:0 auto;padding:0 24px}.comments[data-astro-cid-jvxsf75u]{padding:48px 24px 16px;border-top:1px solid var(--line);margin-top:8px}.comments[data-astro-cid-jvxsf75u] h2[data-astro-cid-jvxsf75u]{font-size:20px;font-weight:700;letter-spacing:-.015em;margin-bottom:10px}.comments[data-astro-cid-jvxsf75u] .hint[data-astro-cid-jvxsf75u]{font-size:13px;color:var(--dim);line-height:1.65;padding:12px 16px;background:var(--brand-soft);border-radius:10px;border-left:2px solid var(--brand);margin-bottom:24px}.comments[data-astro-cid-jvxsf75u] .hint[data-astro-cid-jvxsf75u] a[data-astro-cid-jvxsf75u]{color:var(--brand);text-decoration:none}.comments[data-astro-cid-jvxsf75u] .hint[data-astro-cid-jvxsf75u] a[data-astro-cid-jvxsf75u]:hover{text-decoration:underline}.giscus-wrap[data-astro-cid-jvxsf75u]{margin-top:8px}.col{max-width:700px;margin:0 auto;padding:0 24px}.article-head{padding:72px 0 32px}.crumbs{font-size:12px;color:var(--dim);margin-bottom:24px}.crumbs a{color:var(--dim);text-decoration:none}.crumbs a:hover{color:var(--ink)}.crumbs .sep{margin:0 8px;color:var(--faint)}.article-head .kicker{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--brand);font-weight:600;margin-bottom:16px}.article-head h1{font-size:clamp(34px,4.5vw,46px);font-weight:700;letter-spacing:-.025em;line-height:1.15;margin-bottom:16px}.article-head .lede{font-size:18px;color:var(--dim);line-height:1.6;margin-bottom:28px}.article-head .meta-row{display:flex;gap:14px;align-items:center;font-size:13px;color:var(--dim);padding-top:20px;border-top:1px solid var(--line);flex-wrap:wrap}.article-head .meta-row .author{display:flex;align-items:center;gap:10px}.article-head .meta-row .avatar{width:28px;height:28px;border-radius:50%;background:var(--grad-brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.article-head .meta-row .author strong{color:var(--ink);font-weight:500}.article-head .meta-row .sep{color:var(--faint)}article.body{padding-bottom:64px;font-size:17px;line-height:1.75}article.body>*+*{margin-top:20px}article.body p{color:var(--ink)}article.body h2{font-size:24px;font-weight:700;letter-spacing:-.015em;line-height:1.3;margin-top:48px;margin-bottom:4px}article.body h3{font-size:18px;font-weight:600;line-height:1.4;margin-top:32px;margin-bottom:4px}article.body h4{font-size:16px;font-weight:600;line-height:1.45;margin-top:24px}article.body ul,article.body ol{padding-left:24px}article.body li{margin-top:6px}article.body strong{font-weight:600}article.body em{font-style:italic}article.body a{color:var(--brand);text-decoration:none}article.body a:hover{text-decoration:underline}article.body img{border-radius:10px;cursor:zoom-in;transition:opacity .15s}article.body img:hover{opacity:.92}.img-lightbox{position:fixed;inset:0;background:#0000;display:flex;align-items:center;justify-content:center;z-index:1000;cursor:zoom-out;padding:40px;opacity:0;transition:opacity .2s ease,background .2s ease}.img-lightbox.open{opacity:1;background:#000000e0}.img-lightbox img{max-width:100%;max-height:100%;border-radius:6px;box-shadow:0 20px 60px #0006}article.body blockquote{border-left:2px solid var(--ink);padding-left:20px;color:var(--dim);font-style:italic;margin-left:0}article.body blockquote p{margin-top:0}article.body code{background:var(--code-bg);padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:14px;color:var(--ink)}article.body pre{background:var(--ink);color:#e4e6ed;padding:20px 24px;border-radius:10px;overflow-x:auto;font-family:var(--font-mono);font-size:14px;line-height:1.6}article.body pre code{background:none;padding:0;color:inherit;font-size:inherit}article.body hr{border:none;border-top:1px solid var(--line);margin-top:40px;margin-bottom:40px}article.body table{width:100%;border-collapse:collapse;font-size:14px;margin:16px 0}article.body th,article.body td{border:1px solid var(--line);padding:8px 12px;text-align:left}article.body th{background:var(--code-bg);font-weight:600}.article-foot{padding:32px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:13px;color:var(--dim)}.article-foot strong{color:var(--ink)}.article-foot .share{display:flex;gap:16px}.article-foot .share a{color:var(--dim);text-decoration:none}.article-foot .share a:hover{color:var(--brand)}
