/* Safe, code-aware article typography. Shared visually with admin preview. */
.blog-reading{min-width:0}.blog-reading .esio-prose,.blog-preview{font-size:16px;line-height:1.85;color:#334155;overflow-wrap:anywhere}.blog-reading :is(h2,h3,h4){color:#14233a;line-height:1.35;margin:1.6em 0 .7em;scroll-margin-top:100px}.blog-reading h2{font-size:26px}.blog-reading h3{font-size:22px}.blog-reading h4{font-size:19px}.blog-reading p{margin:0 0 1em}.blog-reading mark{background:#fef08a;color:#452b08;padding:.1em .2em;border-radius:3px}.blog-reading :not(pre)>code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.88em;padding:.18em .4em;background:#edf2f8;border:1px solid #dce5ef;border-radius:5px;color:#8b2450;overflow-wrap:anywhere}.blog-code{margin:22px 0;border:1px solid #26364e;border-radius:12px;overflow:hidden;background:#101b2e;color:#e8edf5;min-width:0;max-width:100%}.blog-code__bar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:10px 16px;background:#1b2b44;border-bottom:1px solid #30415b;font-size:12px;font-weight:700;letter-spacing:.3px}.blog-code__bar button{font-family:inherit;font-size:12px;font-weight:600;line-height:1.4;background:#283c59;color:#edf4ff;border:1px solid #486181;border-radius:7px;padding:7px 10px;cursor:pointer;min-height:34px}.blog-code__bar button:hover{background:#354f73}.blog-code pre,.blog-reading .blog-code pre{display:block;margin:0;background:#101b2e;border:0;border-radius:0;padding:20px;white-space:pre;word-break:normal;overflow-wrap:normal;overflow:auto;max-width:100%;max-height:640px;tab-size:4;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:1.7;color:#e8edf5}.blog-code code{font:inherit;color:inherit;background:none;border:0;padding:0;white-space:inherit}.blog-code :is(button,pre):focus-visible{outline:2px solid #93c5fd;outline-offset:-3px}.blog-reading figure{margin:26px 0}.blog-reading figure img{display:block;width:auto;max-width:100%;height:auto;max-height:850px;object-fit:contain;border-radius:12px;margin-inline:auto}.blog-reading figcaption{font-size:13px;line-height:1.6;color:#64748b;text-align:center;margin-top:10px}.blog-cover img{width:100%!important;max-height:520px!important;object-fit:cover!important}.blog-reading blockquote,.blog-quote{margin:24px 0;border-left:4px solid #3b82f6;padding:16px 22px;background:#f4f8fe;border-radius:0 10px 10px 0;color:#334155}.blog-callout{border:1px solid #f1d68d;border-left:4px solid #e6ad21;border-radius:10px;padding:18px 22px;background:#fffbeb;margin:24px 0}.blog-callout p:last-child,.blog-quote p:last-child{margin-bottom:0}.blog-reading table{display:block;max-width:100%;overflow:auto;border-collapse:collapse;margin:22px 0;font-size:14px}.blog-reading :is(th,td){border:1px solid #dce5ef;padding:10px 14px;text-align:left}.blog-reading th{background:#f1f6fc;color:#16243b}.blog-reading hr{border:0;border-top:1px solid #dce5ef;margin:32px 0}.blog-reading a{color:#1d4ed8;text-decoration-thickness:1px;text-underline-offset:3px}.blog-byline{font-size:13px;color:#64748b;margin:10px 0 22px!important}.blog-bibliography{border-top:2px solid #dfe8f3;margin:40px 0 20px;padding-top:8px}.blog-bibliography ol{padding-left:24px}.blog-bibliography li{padding:12px 0 15px 6px;border-bottom:1px solid #e8eef5;overflow-wrap:anywhere;font-size:14px;scroll-margin-top:100px}.blog-bibliography li>a{font-weight:700}.blog-source-author{display:block;color:#475569;margin:5px 0}.blog-bibliography li p{font-size:13px;margin:6px 0}.blog-bibliography small{font-size:12px;color:#64748b}.blog-tags{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0}.blog-tags span{padding:5px 9px;border:1px solid #dce5ef;background:#f4f8fd;border-radius:7px;font-size:12px;color:#475569}
@media(max-width:700px){.blog-reading h2{font-size:23px}.blog-reading h3{font-size:20px}.blog-code__bar{padding:8px 12px}.blog-code pre,.blog-reading .blog-code pre{padding:15px;font-size:12px;max-height:460px}.blog-reading :is(blockquote,.blog-callout){padding:14px 16px}.blog-cover img{max-height:360px!important}.blog-reading .esio-page-heading h1{overflow-wrap:anywhere}}

.software-body__container.esio-detail.blog-reading{max-width:1000px;margin-inline:auto}
