.article-tool-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:40px 0 8px;padding:20px 22px;border:1px solid var(--cal-hairline);border-radius:12px;background:var(--cal-card)}.article-tool-cta-text{display:flex;flex-direction:column;gap:4px;min-width:0}.article-tool-cta-eyebrow{font:600 12px/1.3 var(--cal-sans);letter-spacing:.04em;text-transform:uppercase;color:var(--cal-accent)}.article-tool-cta-name{font:600 19px/1.25 var(--cal-display);letter-spacing:-.02em;color:var(--cal-ink)}.article-tool-cta-tagline{font:400 14px/1.45 var(--cal-sans);color:var(--cal-muted)}.article-tool-cta-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:44px;background:var(--cal-ink);color:#fff;border-radius:8px;padding:12px 18px;font:600 14px/1 var(--cal-sans);text-decoration:none;white-space:nowrap}.article-tool-cta-btn:hover{background:#242424}@media (max-width: 560px){.article-tool-cta{flex-direction:column;align-items:stretch}.article-tool-cta-btn{text-align:center}}.article-faq{margin:48px 0 0;padding-top:32px;border-top:1px solid var(--cal-hairline)}.article-faq-title{font-family:var(--cal-display);font-size:clamp(24px,2.6vw,32px);font-weight:600;line-height:1.15;letter-spacing:-.03em;color:var(--cal-ink);margin:0 0 16px;scroll-margin-top:calc(var(--nav-offset) + 16px)}.article-faq-item{border-bottom:1px solid var(--cal-hairline)}.article-faq-item summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;min-height:48px;padding:16px 0;font:600 16px/1.45 var(--cal-sans);color:var(--cal-ink)}.article-faq-item summary::-webkit-details-marker{display:none}.article-faq-item summary:after{content:"+";flex-shrink:0;font-weight:400;font-size:20px;line-height:1.1;color:var(--cal-muted)}.article-faq-item[open] summary:after{content:"−"}.article-faq-item summary:focus-visible{outline:2px solid var(--cal-ink);outline-offset:2px}.article-faq-answer{padding:0 0 18px;font:400 16px/1.65 var(--cal-sans);color:var(--cal-body)}.article-faq-answer p{margin:0 0 .6em}.article-faq-answer p:last-child{margin-bottom:0}@media (prefers-reduced-motion: reduce){.article-cta-btn,.article-cta-btn:hover{transition:none!important;transform:none!important}}.blog-shell{--cal-canvas: #ffffff;--cal-card: #f5f5f5;--cal-ink: #111111;--cal-body: #374151;--cal-muted: #6b7280;--cal-muted-soft: #898989;--cal-hairline: #e5e7eb;--cal-hairline-soft: #f3f4f6;--cal-accent: #367d41;--cal-display: "Cal Sans", "Inter", system-ui, -apple-system, sans-serif;--cal-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--cal-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace}.blog-shell:has(.article-page){background:var(--cal-canvas);color:var(--cal-body);font-family:var(--cal-sans)}.blog-shell .reading-progress{background:var(--cal-ink);height:2px}.article-breadcrumb{font-family:var(--cal-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--cal-muted);margin-bottom:40px}.breadcrumb-chip{color:var(--cal-muted)}.breadcrumb-chip:hover{color:var(--cal-ink)}.breadcrumb-sep{color:var(--cal-muted-soft)}.article-page .blog-card-category{font-family:var(--cal-sans);font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--cal-accent)}.article-title{font-family:var(--cal-display);font-size:clamp(34px,5.2vw,60px);font-weight:600;line-height:1.05;letter-spacing:-.04em;color:var(--cal-ink);margin:0 0 20px;font-variation-settings:normal}.article-subtitle{font-family:var(--cal-sans);font-size:clamp(17px,1.7vw,20px);line-height:1.5;color:var(--cal-muted);font-weight:400;font-style:normal;letter-spacing:0;margin:0 0 28px}.article-meta{font-family:var(--cal-sans);font-size:14px;color:var(--cal-muted);border-top:1px solid var(--cal-hairline);border-bottom:1px solid var(--cal-hairline)}.article-author{color:var(--cal-ink);font-weight:600}.article-author-avatar{width:32px;height:32px}.article-author-avatar--initial{background:var(--cal-card);color:var(--cal-ink);font-family:var(--cal-sans);font-weight:600}.article-meta-sep{color:var(--cal-muted-soft)}.article-ai-banner{background:var(--cal-card);border:1px solid var(--cal-hairline);border-left:3px solid var(--cal-ink);border-radius:0 8px 8px 0;font-family:var(--cal-sans);color:var(--cal-body)}.article-ai-banner strong{color:var(--cal-ink)}.article-ai-banner a{color:var(--cal-ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}.article-cover{border-radius:12px;border:1px solid var(--cal-hairline)}.article-body{font-family:var(--cal-sans);font-size:clamp(17px,1.3vw,18px);line-height:1.7;color:var(--cal-body);font-weight:400;font-variation-settings:normal}.article-body>p:first-of-type:first-letter{font-size:inherit;font-weight:inherit;float:none;line-height:inherit;margin:0;color:inherit;font-family:inherit;font-variation-settings:normal}.article-body h2{font-family:var(--cal-display);font-size:clamp(24px,2.6vw,32px);font-weight:600;line-height:1.15;letter-spacing:-.03em;color:var(--cal-ink);margin:1.8em 0 .5em;font-variation-settings:normal}.article-body h3{font-family:var(--cal-display);font-size:clamp(19px,1.7vw,22px);font-weight:600;letter-spacing:-.02em;text-transform:none;color:var(--cal-ink);margin:1.6em 0 .4em}.article-body strong{font-weight:600;color:var(--cal-ink)}.article-body a{color:var(--cal-ink);text-decoration:underline;text-decoration-color:var(--cal-accent);text-decoration-thickness:1.5px;text-underline-offset:3px}.article-body a:hover{color:var(--cal-accent)}.article-body li::marker{color:var(--cal-muted)}.article-body blockquote{border-left:3px solid var(--cal-ink);color:var(--cal-muted);font-style:normal;padding:4px 0 4px 24px}.article-body code,.article-body .blog-code{font-family:var(--cal-mono);background:var(--cal-hairline-soft);border-radius:6px;color:var(--cal-ink)}.article-body pre,.article-body .blog-code{background:var(--cal-hairline-soft);border:1px solid var(--cal-hairline);border-radius:8px;font-family:var(--cal-mono)}.article-body img,.article-body .blog-img{border-radius:12px;border:1px solid var(--cal-hairline)}.article-tags{border-top:1px solid var(--cal-hairline)}.article-tags-label{font-family:var(--cal-sans);font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--cal-muted)}.article-tag{font-family:var(--cal-sans);font-size:13px;color:var(--cal-body);background:var(--cal-card);border:1px solid transparent;border-radius:9999px;padding:5px 12px}.article-tag:hover{border-color:var(--cal-hairline);color:var(--cal-ink)}.article-cta-bottom{border-top:1px solid var(--cal-hairline)}.article-back-btn{font-family:var(--cal-sans);font-size:14px;font-weight:600;color:var(--cal-muted)}.article-back-btn:hover{color:var(--cal-ink)}.article-cta-btn{background:var(--cal-ink);color:#fff;border-radius:8px;font-family:var(--cal-sans);font-size:14px;font-weight:600;padding:12px 20px}.article-cta-btn:hover{background:#242424;transform:none}.article-toc{border-left:1px solid var(--cal-hairline)}.article-toc-label{font-family:var(--cal-sans);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--cal-muted);border-bottom:1px solid var(--cal-hairline)}.article-toc-link{font-family:var(--cal-sans);font-size:13px;color:var(--cal-muted)}.article-toc-link--sub{color:var(--cal-muted);border-left:1px solid var(--cal-hairline)}.article-toc-link:hover{color:var(--cal-ink)}.article-toc-link.active{color:var(--cal-ink);font-weight:600}.article-toc-top{font-family:var(--cal-sans);font-size:12px;color:var(--cal-muted);border-top:1px solid var(--cal-hairline)}.article-toc-top:hover{color:var(--cal-ink)}.article-toc-mobile{display:none}@media (max-width: 980px){.article-toc-mobile{display:block;margin:0 0 32px;border:1px solid var(--cal-hairline);border-radius:10px}.article-toc-mobile summary{min-height:48px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;font:600 14px/1.3 var(--cal-sans);color:var(--cal-ink);cursor:pointer;list-style:none}.article-toc-mobile summary::-webkit-details-marker{display:none}.article-toc-mobile-count{font-weight:500;color:var(--cal-muted)}.article-toc-mobile ol{margin:0;padding:4px 16px 12px 36px;border-top:1px solid var(--cal-hairline)}.article-toc-mobile a{display:block;padding:10px 0;font:400 15px/1.4 var(--cal-sans);color:var(--cal-body);text-decoration:none}}.article-related{max-width:720px;margin:64px auto 0;padding-top:40px;border-top:1px solid var(--cal-hairline)}.article-related-label{font-family:var(--cal-sans);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--cal-muted);margin-bottom:20px}.article-related-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px}.article-related-card{display:block;padding:18px;border:1px solid var(--cal-hairline);border-radius:10px;text-decoration:none;transition:border-color .15s ease}.article-related-card:hover{border-color:var(--cal-ink)}.article-related-category{font-family:var(--cal-sans);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--cal-accent)}.article-related-title{font-family:var(--cal-display);font-size:17px;font-weight:600;line-height:1.3;letter-spacing:-.02em;color:var(--cal-ink);margin:8px 0 10px}.article-related-meta{font-family:var(--cal-sans);font-size:13px;color:var(--cal-muted)}.article-body .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.6em 0;border:1px solid var(--cal-hairline);border-radius:10px}.article-body .table-scroll:focus-visible{outline:2px solid var(--cal-ink);outline-offset:2px}.article-body table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.45;font-variant-numeric:tabular-nums}.article-body th,.article-body td{padding:10px 14px;border-bottom:1px solid var(--cal-hairline);text-align:left;vertical-align:top}.article-body th{background:var(--cal-card);color:var(--cal-ink);font-weight:600;font-size:13px;white-space:nowrap}.article-body td{min-width:8ch}.article-body tbody tr:last-child td{border-bottom:0}.article-body hr{border:0;border-top:1px solid var(--cal-hairline);margin:2.2em 0}.article-body blockquote p+p{margin-top:.6em}
