[data-rmiz-ghost]{pointer-events:none;position:absolute}[data-rmiz-btn-zoom],[data-rmiz-btn-unzoom]{color:#fff;outline-offset:2px;touch-action:manipulation;appearance:none;background-color:#000000b3;border:none;border-radius:50%;width:40px;height:40px;margin:0;padding:9px;box-shadow:0 0 1px #ffffff80}[data-rmiz-btn-zoom]:not(:focus):not(:active){clip:rect(0 0 0 0);clip-path:inset(50%);pointer-events:none;white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-rmiz-btn-zoom]{cursor:zoom-in;position:absolute;inset:10px 10px auto auto}[data-rmiz-btn-unzoom]{cursor:zoom-out;z-index:1;position:absolute;inset:20px 20px auto auto}[data-rmiz-content=found] img,[data-rmiz-content=found] svg,[data-rmiz-content=found] [role=img],[data-rmiz-content=found] [data-zoom]{cursor:zoom-in}[data-rmiz-modal]::backdrop{display:none}[data-rmiz-modal][open]{pointer-events:all;background:0 0;border:0;width:100dvw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;overflow:hidden}[data-rmiz-modal-overlay]{transition:background-color .3s;position:absolute;inset:0}[data-rmiz-modal-overlay=hidden]{background-color:#fff0}[data-rmiz-modal-overlay=visible]{background-color:#fff}[data-rmiz-modal-content]{width:100%;height:100%;position:relative}[data-rmiz-modal-img]{cursor:zoom-out;image-rendering:high-quality;transform-origin:0 0;transition:transform .3s;position:absolute}@media (prefers-reduced-motion:reduce){[data-rmiz-modal-overlay],[data-rmiz-modal-img]{transition-duration:.01ms!important}}
.blog-post-wrapper{--bg:#f7f5f0;--bg2:#efece6;--surface:#fff;--ink:#1a1714;--ink2:#4a4540;--ink3:#8a8480;--accent:#c0392b;--accent-bg:#f9ecea;--border:#e2ddd6;--tag-bg:#eeebe5;--serif:"Playfair Display","Noto Serif SC",serif;--sans:"Noto Sans SC",sans-serif;--r:5px;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.7}.blog-post-wrapper *,.blog-post-wrapper :before,.blog-post-wrapper :after{box-sizing:border-box}.blog-post-wrapper a{color:inherit;text-decoration:none}.blog-post-wrapper img{max-width:100%;display:block}.blog-post-wrapper .reading-bar{background:var(--border);z-index:99;height:2px;position:sticky;top:0}.blog-post-wrapper .reading-fill{background:var(--accent);width:0%;height:100%;transition:width .12s linear}.blog-post-wrapper .crumb{max-width:1080px;color:var(--ink3);align-items:center;gap:.4rem;margin:0 auto;padding:1.1rem clamp(1rem,4vw,2.5rem) 0;font-size:.72rem;display:flex}.blog-post-wrapper .crumb a:hover{color:var(--accent)}.blog-post-wrapper .crumb-sep{opacity:.4}.blog-post-wrapper .post-hdr{border-bottom:1px solid var(--border);max-width:1080px;margin:0 auto;padding:1.8rem clamp(1rem,4vw,2.5rem)}.blog-post-wrapper .ptags{flex-wrap:wrap;gap:.4rem;margin-bottom:.9rem;display:flex}.blog-post-wrapper .ptag{color:var(--accent);background:var(--accent-bg);letter-spacing:.04em;border:1px solid #c0392b33;border-radius:20px;padding:.15rem .55rem;font-size:.65rem;font-weight:500;transition:background .18s}.blog-post-wrapper .ptag:hover{background:#f5d9d6}.blog-post-wrapper .ptitle{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);margin-bottom:.7rem;font-size:clamp(1.5rem,3.2vw,2.1rem);font-weight:700;line-height:1.25}.blog-post-wrapper .ptitle em{color:var(--accent);font-style:italic}.blog-post-wrapper .pdesc{color:var(--ink2);margin-bottom:1.2rem;font-size:.88rem;font-weight:300;line-height:1.7}.blog-post-wrapper .pmeta{flex-wrap:wrap;align-items:center;gap:1.2rem;display:flex}.blog-post-wrapper .pmeta-author{align-items:center;gap:.4rem;display:flex}.blog-post-wrapper .pmeta-av{border:1.5px solid var(--border);background:var(--tag-bg);width:24px;height:24px;color:var(--ink3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;display:flex}.blog-post-wrapper .pmeta-av--img{object-fit:cover;padding:0}.blog-post-wrapper .pmeta-name{color:var(--ink2);font-size:.78rem;font-weight:500}.blog-post-wrapper .pmeta-updated{color:var(--ink3);margin-left:.2rem}.blog-post-wrapper .dot{background:var(--border);border-radius:50%;flex-shrink:0;width:3px;height:3px}.blog-post-wrapper .pmeta-it{color:var(--ink3);align-items:center;gap:.3rem;font-size:.72rem;display:flex}.blog-post-wrapper .badge{color:var(--surface);background:var(--ink3);border-radius:3px;padding:.1rem .4rem;font-size:.62rem}.blog-post-wrapper .page-body{grid-template-columns:1fr 200px;align-items:start;gap:0 3rem;max-width:1080px;margin:0 auto;padding:2rem clamp(1rem,4vw,2.5rem) 4rem;display:grid}.blog-post-wrapper .right-toc{scrollbar-width:none;max-height:calc(100vh - 48px);position:sticky;top:24px;overflow-y:auto}.blog-post-wrapper .right-toc::-webkit-scrollbar{display:none}.blog-post-wrapper .toc-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:.9rem;padding-bottom:.7rem;display:flex}.blog-post-wrapper .toc-title-row{align-items:center;gap:.5rem;display:flex}.blog-post-wrapper .toc-accent-bar{background:var(--accent);border-radius:2px;flex-shrink:0;width:3px;height:14px}.blog-post-wrapper .toc-label{color:var(--ink3);letter-spacing:.14em;text-transform:uppercase;font-size:.68rem;font-weight:500}.blog-post-wrapper .toc-count{color:var(--ink3);background:var(--tag-bg);border-radius:3px;padding:.1rem .4rem;font-size:.62rem}.blog-post-wrapper .toc-items{flex-direction:column;display:flex}.blog-post-wrapper .toc-item{align-items:stretch;display:flex;position:relative}.blog-post-wrapper .toc-track{background:var(--border);border-radius:2px;flex-shrink:0;width:2px;margin-right:.75rem;transition:background .2s}.blog-post-wrapper .toc-item.act .toc-track{background:var(--accent)}.blog-post-wrapper .toc-link{color:var(--ink3);cursor:pointer;text-align:left;font-size:.76rem;line-height:1.4;font-family:var(--sans);background:0 0;border:none;flex:1;align-items:baseline;gap:.45rem;padding:.32rem 0;transition:color .2s;display:flex}.blog-post-wrapper .toc-link:hover{color:var(--ink2)}.blog-post-wrapper .toc-item.act .toc-link{color:var(--ink)}.blog-post-wrapper .toc-num{font-family:var(--serif);color:var(--border);flex-shrink:0;min-width:1.2rem;font-size:.65rem;transition:color .2s}.blog-post-wrapper .toc-item.act .toc-num{color:var(--accent)}.blog-post-wrapper .toc-text{line-height:1.4}.blog-post-wrapper .toc-item.depth-3 .toc-link{padding-left:.8rem;font-size:.71rem}.blog-post-wrapper .toc-item.depth-3 .toc-num{display:none}.blog-post-wrapper .toc-item.depth-4 .toc-link{padding-left:1.6rem;font-size:.68rem}.blog-post-wrapper .toc-item.depth-4 .toc-num{display:none}.blog-post-wrapper .toc-empty{color:var(--ink3);padding:.5rem 0;font-size:.76rem}.blog-post-wrapper .toc-divider{border:none;border-top:1px solid var(--border);margin:1.2rem 0}.blog-post-wrapper .rel-ttl{color:var(--ink3);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:.45rem;margin-bottom:.8rem;font-size:.68rem;font-weight:500;display:flex}.blog-post-wrapper .rel-ttl:before{content:"";background:var(--accent);width:13px;height:1.5px;display:block}.blog-post-wrapper .rel-list{flex-direction:column;display:flex}.blog-post-wrapper .rel-item{border-bottom:1px solid var(--border);flex-direction:column;gap:.1rem;padding:.55rem 0;display:flex}.blog-post-wrapper .rel-item:last-child{border-bottom:none}.blog-post-wrapper .rel-item:hover .rel-title{color:var(--accent)}.blog-post-wrapper .rel-title{color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.76rem;line-height:1.35;transition:color .2s;display:-webkit-box;overflow:hidden}.blog-post-wrapper .rel-meta{color:var(--ink3);font-size:.65rem;font-weight:300}.blog-post-wrapper .prose{color:var(--ink2);font-size:.9rem;line-height:1.9}.blog-post-wrapper .prose>*+*{margin-top:1.3em}.blog-post-wrapper .prose h2{font-family:var(--serif);color:var(--ink);letter-spacing:-.01em;border-bottom:1px solid var(--border);align-items:center;gap:.4rem;margin-top:2em;margin-bottom:.5em;padding-bottom:.35rem;font-size:1.25rem;font-weight:600;line-height:1.3;display:flex}.blog-post-wrapper .prose h3{font-family:var(--serif);color:var(--ink);margin-top:1.6em;margin-bottom:.4em;font-size:1.02rem;font-weight:600}.blog-post-wrapper .anch{color:var(--border);font-size:.7rem;font-family:var(--sans);font-style:normal;font-weight:400;transition:color .2s}.blog-post-wrapper .prose h2:hover .anch,.blog-post-wrapper .prose h3:hover .anch{color:var(--accent)}.blog-post-wrapper .prose p{margin-bottom:0}.blog-post-wrapper .prose strong{color:var(--ink);font-weight:600}.blog-post-wrapper .prose em{font-style:italic}.blog-post-wrapper .prose a{color:var(--accent);border-bottom:1px solid #c0392b4d;transition:border-color .2s}.blog-post-wrapper .prose a:hover{border-color:var(--accent)}.blog-post-wrapper .prose ul{flex-direction:column;gap:.3em;padding:0;list-style:none;display:flex}.blog-post-wrapper .prose ul li{padding-left:1.3em;position:relative}.blog-post-wrapper .prose ul li:before{content:"";background:var(--accent);opacity:.7;border-radius:50%;width:4px;height:4px;position:absolute;top:.72em;left:.2rem}.blog-post-wrapper .prose ol{flex-direction:column;gap:.3em;padding-left:1.5em;display:flex}.blog-post-wrapper .prose ol li::marker{color:var(--accent);font-size:.85em;font-weight:600}.blog-post-wrapper .prose blockquote{border-left:3px solid var(--accent);background:var(--accent-bg);border-radius:0 var(--r)var(--r)0;color:var(--ink2);margin:1.6em 0;padding:.8rem 1.1rem;font-size:.88rem;font-style:italic}.blog-post-wrapper .prose blockquote p{margin:0}.blog-post-wrapper .prose :not(pre)>code{background:var(--tag-bg);color:var(--accent);border:1px solid var(--border);border-radius:3px;padding:.12em .4em;font-family:JetBrains Mono,Fira Code,monospace;font-size:.82em}.blog-post-wrapper .prose pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin:1.6em 0;padding:1.1rem 1.2rem;position:relative;overflow-x:auto}.blog-post-wrapper .prose pre:before{content:attr(data-lang);color:var(--ink3);letter-spacing:.08em;text-transform:uppercase;font-size:.6rem;font-family:var(--sans);position:absolute;top:.5rem;right:4.5rem}.blog-post-wrapper .prose pre code{color:var(--ink2);background:0 0;border:none;border-radius:0;padding:0;font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem;line-height:1.7}.blog-post-wrapper .copy-btn{background:var(--tag-bg);border:1px solid var(--border);color:var(--ink3);cursor:pointer;font-size:.65rem;font-family:var(--sans);letter-spacing:.04em;opacity:0;border-radius:3px;padding:.18rem .55rem;transition:all .2s;position:absolute;top:.45rem;right:.6rem}.blog-post-wrapper .prose pre:hover .copy-btn{opacity:1}.blog-post-wrapper .copy-btn:hover{color:var(--ink);background:var(--bg2)}.blog-post-wrapper .copy-btn.ok{color:var(--accent);border-color:var(--accent)}.blog-post-wrapper .prose hr{border:none;border-top:1px solid var(--border);width:40%;margin:2.2em auto}.blog-post-wrapper .prose table{border-collapse:collapse;border:1px solid var(--border);border-radius:var(--r);width:100%;margin:1.6em 0;font-size:.82rem;overflow:hidden}.blog-post-wrapper .prose thead{background:var(--bg2)}.blog-post-wrapper .prose th,.blog-post-wrapper .prose td{text-align:left;border-bottom:1px solid var(--border);padding:.55rem .9rem}.blog-post-wrapper .prose th{color:var(--ink);letter-spacing:.04em;font-size:.76rem;font-weight:600}.blog-post-wrapper .prose td{color:var(--ink2)}.blog-post-wrapper .prose tbody tr:last-child td{border-bottom:none}.blog-post-wrapper .prose tbody tr:hover td{background:var(--bg2)}.blog-post-wrapper .prose figure{text-align:center;margin:2em 0}.blog-post-wrapper .prose figure img{border-radius:var(--r);border:1px solid var(--border);margin:0 auto}.blog-post-wrapper .prose figcaption{color:var(--ink3);letter-spacing:.03em;margin-top:.6rem;font-size:.75rem;font-style:italic}.blog-post-wrapper .callout{border-radius:var(--r);border:1px solid var(--border);background:var(--surface);align-items:flex-start;gap:.7rem;margin:1.6em 0;padding:.8rem 1rem;font-size:.85rem;display:flex}.blog-post-wrapper .callout.tip{background:var(--accent-bg);border-color:#c0392b33}.blog-post-wrapper .callout.info{background:#eef4fb;border-color:#b8d4f0}.blog-post-wrapper .callout.warn{background:#fdf6ec;border-color:#f0d9a8}.blog-post-wrapper .callout.danger{background:#fef2f0;border-color:#f5b8b3}.blog-post-wrapper .callout-icon{flex-shrink:0;margin-top:.05em;font-size:.9rem}.blog-post-wrapper .callout-body{color:var(--ink2);flex:1;line-height:1.6}.blog-post-wrapper .callout-body strong{color:var(--ink);margin-bottom:.15rem;font-size:.82rem;display:block}.blog-post-wrapper .pnav{background:var(--border);border:1px solid var(--border);border-radius:var(--r);grid-template-columns:1fr 1fr;gap:1px;margin-top:2.5rem;display:grid;overflow:hidden}.blog-post-wrapper .pnav-item{background:var(--surface);flex-direction:column;gap:.15rem;padding:.9rem 1.1rem;transition:background .15s;display:flex}.blog-post-wrapper .pnav-item:hover{background:var(--bg2)}.blog-post-wrapper .pnav-item.nxt{text-align:right;align-items:flex-end}.blog-post-wrapper .pnav-dir{color:var(--ink3);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.25rem;font-size:.62rem;display:flex}.blog-post-wrapper .pnav-title{font-family:var(--serif);color:var(--ink);font-size:.88rem;line-height:1.35;transition:color .2s}.blog-post-wrapper .pnav-item:hover .pnav-title{color:var(--accent)}.blog-post-wrapper .btt{z-index:50;background:var(--surface);border:1px solid var(--border);width:34px;height:34px;color:var(--ink3);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;transition:all .25s;display:flex;position:fixed;bottom:2rem;right:2rem;transform:translateY(6px);box-shadow:0 2px 8px #00000012}.blog-post-wrapper .btt.on{opacity:1;pointer-events:auto;transform:translateY(0)}.blog-post-wrapper .btt:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.blog-post-wrapper .footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;max-width:1080px;margin:0 auto;padding:1.6rem clamp(1rem,4vw,2.5rem);display:flex}.blog-post-wrapper .footer-copy{color:var(--ink3);font-size:.72rem;font-weight:300}.blog-post-wrapper .footer-nav{gap:1.4rem;list-style:none;display:flex}.blog-post-wrapper .footer-nav a{color:var(--ink3);font-size:.72rem;transition:color .2s}.blog-post-wrapper .footer-nav a:hover{color:var(--ink)}@media (max-width:768px){.blog-post-wrapper .page-body{grid-template-columns:1fr}.blog-post-wrapper .right-toc{display:none}.blog-post-wrapper .pnav{grid-template-columns:1fr}.blog-post-wrapper .btt{bottom:1.2rem;right:1.2rem}}@media (max-width:480px){.blog-post-wrapper .pmeta{gap:.8rem}.blog-post-wrapper .post-hdr{padding-bottom:1.4rem}}
