:root{--ink:#282828;--muted:#888;--line:#e5e5e5;--paper:#fff;--hover:#86a6df;--site-width:1200px;--reading-width:800px;--font-sans:"SF Pro Text", "Inter", "Source Han Sans SC", "Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-serif:"Iowan Old Style", "Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", "STSong", serif;--font-mono:"SFMono-Regular", "Cascadia Code", "JetBrains Mono", Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}html.lenis{scroll-behavior:auto}body{color:var(--ink);background:var(--paper);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;line-height:1.7}body.menu-open,body.search-open{overflow:hidden}.page-loader{z-index:2000;background:var(--paper);color:var(--ink);opacity:1;visibility:visible;place-items:center;transition:opacity .4s cubic-bezier(.22,1,.36,1),visibility .4s;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.page-loader .carbon-icon{animation:.8s linear infinite page-loader-spin}.page-loader.leaving{opacity:0;visibility:hidden;pointer-events:none}html.internal-navigation .page-loader{display:none}html.internal-navigation .page-entering .site-menu,html.internal-navigation .page-entering main,html.internal-navigation .page-entering .site-footer{opacity:1;transform:none}.page-entering .site-menu,.page-entering main,.page-entering .site-footer{opacity:0;transform:translateY(5px)}.page-entering.page-visible .site-menu,.page-entering.page-visible main,.page-entering.page-visible .site-footer{opacity:1;transform:none}.site-menu,main,.site-footer{transition:opacity .38s cubic-bezier(.22,1,.36,1),transform .38s cubic-bezier(.22,1,.36,1)}.page-entering.page-visible main{transition-delay:60ms}.page-entering.page-visible .site-footer{transition-delay:.12s}@keyframes page-loader-spin{to{transform:rotate(360deg)}}@view-transition{navigation:auto}::view-transition-old(root){animation:.22s both page-view-out}::view-transition-new(root){animation:.34s cubic-bezier(.22,1,.36,1) both page-view-in}@keyframes page-view-out{to{opacity:0}}@keyframes page-view-in{0%{opacity:0}to{opacity:1}}a{color:var(--ink);text-decoration:none}img{max-width:100%;height:auto}button,input,textarea{font:inherit}button{color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;margin:0}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;min-width:0!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.site-width{width:min(var(--site-width), 100%);margin-inline-start:auto;margin-inline-end:auto}.site-menu{z-index:1000;height:64px;transition:box-shadow .25s;position:fixed;top:0;left:0;right:0}.site-menu.is-scrolled{box-shadow:0 8px 24px #28282814}.menu-bar{z-index:2;-webkit-backdrop-filter:saturate(160%)blur(14px);background:#ffffffeb;border-bottom:1px solid #0000;height:64px;transition:border-color .25s,background-color .25s;position:relative}.site-menu.is-scrolled .menu-bar{background:#fffffff5;border-color:#28282814}.menu-inner{justify-content:space-between;align-items:center;height:64px;display:flex}.site-logo{flex:none;align-items:center;width:auto;max-width:240px;height:22px;transition:opacity .2s;display:flex}.site-logo.has-image{width:112px}.site-logo:hover{opacity:.68}.site-logo img{object-fit:contain;object-position:left center;width:100%;max-height:22px;display:block}.site-logo span{font-family:var(--font-serif);text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:600;line-height:22px;display:block;overflow:hidden}.primary-nav{justify-content:flex-end;align-items:stretch;gap:4px;height:64px;margin-left:auto;display:flex}.primary-nav a{min-width:56px;color:var(--ink);white-space:nowrap;justify-content:center;align-items:center;padding:0 14px;font-size:13px;font-weight:700;transition:color .2s;display:flex;position:relative}.primary-nav a:after{background:var(--ink);content:"";opacity:0;width:20px;height:2px;transition:opacity .2s,transform .2s;position:absolute;bottom:13px;left:50%;transform:translate(-50%)scaleX(.25)}.primary-nav a.active{color:var(--ink)}.primary-nav a.active:after{opacity:1;transform:translate(-50%)scaleX(1)}.primary-nav a:focus-visible{outline:2px solid var(--hover);outline-offset:3px}.site-logo:focus-visible{outline:2px solid var(--hover);outline-offset:3px}.menu-toggle:focus-visible{outline:2px solid var(--hover);outline-offset:3px}.menu-toggle,.menu-backdrop{display:none}.search-trigger,.search-close,.search-form button{width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.search-trigger{margin-left:8px}.search-trigger:hover,.search-close:hover,.search-form button:hover{background:#f2f2f2}.search-trigger:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.search-close:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.search-form button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.search-panel{z-index:1200;position:fixed;top:0;bottom:0;left:0;right:0}.search-panel[hidden]{display:none}.search-backdrop{cursor:default;background:#14141461;border:0;width:100%;padding:0;position:absolute;top:0;bottom:0;left:0;right:0}.search-dialog{z-index:1;border-top:2px solid var(--ink);background:#fff;width:min(760px,100% - 40px);margin:112px auto 0;padding:0 28px 34px;position:relative;box-shadow:0 24px 70px #00000026}.search-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:58px;display:flex}.search-header>span{color:var(--muted);font-size:10px;font-weight:700}.search-close{margin-right:-10px}.search-form{border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,1fr) 44px;align-items:center;padding-top:24px;display:grid}.search-form input{width:100%;min-width:0;height:64px;color:var(--ink);font-family:var(--font-serif);background:0 0;border:0;outline:0;padding:0;font-size:30px}.search-form input::placeholder{color:#aaa;opacity:1}.search-form input::-webkit-search-cancel-button{display:none}@media (min-width:769px){.primary-nav a:hover:after{opacity:.32;transform:translate(-50%)scaleX(1)}.primary-nav a.active:hover:after{opacity:1}}.archive-main{padding:88px 0 20px}.carbon-icon{flex:none;display:block}.home-intro{border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,2fr) minmax(260px,1fr);align-items:end;gap:64px;min-height:390px;padding:74px 0 62px;display:grid}.home-kicker{color:var(--muted);margin-bottom:28px;margin-left:5px;font-size:11px;font-weight:700;display:block}.home-intro h1{max-width:780px;font-family:var(--font-serif);margin:0;font-size:68px;font-weight:500;line-height:1.16}.home-intro-side{padding-bottom:8px}.home-intro-side p{color:#666;margin:0 0 28px;font-size:14px;line-height:1.9}.home-intro-status,.home-intro-side a{border-bottom:1px solid var(--ink);align-items:center;gap:28px;padding-bottom:6px;font-size:13px;font-weight:700;display:inline-flex}.home-intro-side a .carbon-icon{transition:transform .2s}.home-intro-side a:hover .carbon-icon{transform:translate(5px)}.home-section-heading{justify-content:space-between;align-items:flex-end;padding:46px 0 24px;display:flex}.home-section-heading>div{align-items:baseline;gap:14px;display:flex}.home-section-heading h2{margin:0;font-size:22px;font-weight:600}.home-section-heading span{color:var(--muted);font-size:10px;font-weight:700}.home-section-heading>div span{color:var(--ink);font-family:var(--font-mono)}.search-results-heading{border-bottom:1px solid var(--ink);margin-bottom:24px;padding-top:46px}.search-results-heading h2{overflow-wrap:anywhere;max-width:760px}.archive-layout{grid-template-columns:minmax(0,7fr) minmax(270px,3fr);align-items:start;gap:42px;display:grid}.archive-layout.no-sidebar{display:block}.archive-content{min-width:0}.post-grid{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.grid-item{min-width:0;position:relative;overflow:hidden}.archive-card{grid-column:span 1}.card-image{background-color:#a6a6a6;background-position:50%;background-repeat:no-repeat;background-size:cover;height:220px;transition:border-color .28s,background-color .28s;position:relative;overflow:hidden}.card-image.is-placeholder{background-color:#fff;border:1px solid #d9d9d9}.card-image.cover-pending{cursor:progress}.card-image:before{z-index:2;content:"";background:#ffffff80;height:1px;transition:background-color .3s;position:absolute;top:66px;left:20px;right:20px}.card-image.is-placeholder:before{background:#d9d9d9}.grid-item>a:hover .card-image:before{background:#ffffffe6}.grid-item>a:focus-visible .card-image:before{background:#ffffffe6}.grid-item>a:hover .card-image.is-placeholder:before{background:var(--ink)}.grid-item>a:focus-visible .card-image.is-placeholder:before{background:var(--ink)}.grid-item>a{display:block;overflow:hidden}.grid-item>a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.grid-item>a:hover .card-image.is-placeholder{border-color:var(--ink);background-color:#f8f8f6}.grid-item>a:focus-visible .card-image.is-placeholder{border-color:var(--ink);background-color:#f8f8f6}.card-image:after{content:"";background:#00000040;transition:background-color .5s;position:absolute;top:0;bottom:0;left:0;right:0}.grid-item:first-child .card-image:after{background:#00000040}.grid-item>a:hover .card-image:after{background:#0000001a}.grid-item>a:focus-visible .card-image:after{background:#0000001a}.card-image.is-placeholder:after,.grid-item:first-child .card-image.is-placeholder:after,.grid-item>a:hover .card-image.is-placeholder:after{background:0 0}.grid-item>a:focus-visible .card-image.is-placeholder:after{background:0 0}.card-title{z-index:1;text-align:left;background:0 0;align-items:flex-start;min-height:100%;padding:18px 20px 21px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.card-title h2{color:#fff;overflow-wrap:anywhere;-webkit-line-clamp:4;-webkit-box-orient:vertical;max-width:680px;margin:auto 0 0;font-size:18px;font-weight:400;line-height:1.55;transition:transform .28s;display:-webkit-box;overflow:hidden}.card-title p{display:none}.card-open{z-index:4;color:#fff;opacity:0;border:1px solid #ffffff73;place-items:center;width:36px;height:36px;transition:opacity .25s,transform .25s,background-color .25s;display:grid;position:absolute;top:16px;right:18px;transform:translate(-4px,4px)}.is-placeholder .card-open{color:var(--ink);border-color:var(--line)}.grid-item>a:hover .card-open{opacity:1;transform:none}.grid-item>a:focus-visible .card-open{opacity:1;transform:none}.grid-item>a:hover .card-title h2{transform:translateY(-3px)}.grid-item>a:focus-visible .card-title h2{transform:translateY(-3px)}body.is-home .post-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}body.home-page-paged .archive-layout{display:block}body.home-page-paged .post-grid{grid-template-columns:repeat(3,minmax(0,1fr))}body.home-page-first .grid-item:first-child{grid-column:1/-1}body.is-home .card-image{height:330px}body.home-page-first .grid-item:first-child .card-image{height:460px}body.is-home .card-image:before{top:72px;left:22px;right:22px}body.is-home .card-title{flex-direction:column;padding:20px 22px 24px}body.is-home .card-meta{top:19px;left:22px;right:70px}body.is-home .card-title h2{font-family:var(--font-serif);margin-top:auto;margin-bottom:0;font-size:25px;line-height:1.35}body.home-page-first .grid-item:first-child .card-title h2{max-width:760px;font-size:36px}body.is-home .card-title p{color:#ffffffb8;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:620px;margin:10px 0 0;font-size:12px;line-height:1.65;display:-webkit-box;overflow:hidden}body.is-home .is-placeholder .card-title p{color:var(--muted)}.is-placeholder .card-title,.is-placeholder .card-title h2{color:var(--ink)}.card-meta{color:#ffffffb8;justify-content:space-between;align-items:baseline;font-size:10px;display:flex;position:absolute;top:17px;left:20px;right:20px}.card-meta span{color:#fff;font-family:var(--font-sans);text-transform:uppercase;font-size:10px;font-weight:700}.is-placeholder .card-meta{color:#777}.is-placeholder .card-meta span{color:var(--ink)}.archive-cover{background:#555;place-items:center;display:grid}.archive-cover:after{background:#00000029!important}.archive-title{color:#fff;background:0 0;min-height:0;padding:24px;display:block;position:relative;top:auto;bottom:auto;left:auto;right:auto}.archive-title span{font-size:18px;font-weight:700;display:block}.archive-title h1{color:#fff;overflow-wrap:anywhere;margin:0;font-size:30px;font-weight:400;line-height:1.3}.empty-state{text-align:center;grid-column:1/-1;padding:100px 24px}.empty-state h1{margin:0 0 8px;font-size:28px}.empty-state p{color:var(--muted);margin:0 0 20px}.empty-state a{border-bottom:1px solid var(--ink)}.pagination{border-top:1px solid var(--ink);margin-top:48px;padding:22px 0 0;position:relative}.pagination ul,.comment-pagination ul{justify-content:center;align-items:center;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pagination ul{min-width:0;min-height:38px;padding-inline-start:48px;padding-inline-end:48px;position:relative;overflow:hidden}.pagination li a,.pagination li span,.comment-pagination li a,.comment-pagination li span{min-width:32px;height:32px;color:var(--muted);place-items:center;padding:0 7px;font-size:13px;display:grid}.pagination li.current a,.pagination li.current span{border:1px solid var(--ink);color:var(--ink);background:0 0;font-weight:700}.pagination li.prev,.pagination li.next{position:absolute;top:0}.pagination li.prev{left:0}.pagination li.next{right:0}.pagination li.prev a,.pagination li.next a{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);padding:0}.pagination-disabled{z-index:1;border:1px solid var(--line);color:#bbb;cursor:not-allowed;place-items:center;width:38px;height:38px;display:grid;position:absolute;bottom:0}.pagination-disabled-prev{left:0}.pagination-disabled-next{right:0}.pagination-summary{display:none}.pagination-jump-button{min-width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0 8px;display:grid}.pagination-jump-button:hover{color:var(--ink);background:#f2f2f2}.pagination-jump-form input{border:1px solid var(--ink);width:48px;height:34px;font-family:var(--font-mono);text-align:center;background:#fff;border-radius:0;outline:0;padding:0 4px;font-size:12px}.pagination-jump-form input::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.pagination-jump-form input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.pagination li.prev a:hover,.pagination li.next a:hover{border-color:var(--ink);background:0 0}.pagination a:hover,.comment-pagination a:hover{color:var(--ink);background:#f2f2f2}.pagination li.current a:hover{background:var(--ink);color:#fff}.site-sidebar{min-width:0;position:static}.sidebar-section{border-top:1px solid #dedede;margin:0 0 38px;padding:0}.sidebar-heading{justify-content:space-between;align-items:center;gap:12px;min-height:52px;margin:0 0 8px;padding:8px 4px 0;display:flex}.sidebar-heading h2{align-items:center;gap:7px;margin:0;font-size:14px;font-weight:700;display:flex}.sidebar-heading h2 .carbon-icon{color:#777}.sidebar-heading span{color:var(--muted);letter-spacing:0;font-size:9px;font-weight:700}.sidebar-posts{margin:0;padding:0;list-style:none}.sidebar-posts li{border-bottom:1px solid var(--line);grid-template-columns:44px minmax(0,1fr);gap:14px;min-height:64px;padding:13px 4px;display:grid}.sidebar-posts li:last-child{border-bottom:0}.sidebar-index{color:#aaa;font-family:var(--font-serif);padding-top:2px;font-size:25px;font-weight:400;line-height:1}.sidebar-post-link{min-width:0;color:var(--ink);flex-direction:column;justify-content:flex-start;display:flex}.sidebar-post-title{min-width:0;font-family:var(--font-serif);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:500;line-height:1.55;transition:color .2s;display:-webkit-box;overflow:hidden}.sidebar-post-foot{color:var(--muted);justify-content:space-between;align-items:center;margin-top:9px;display:flex}.sidebar-post-foot small{color:inherit;align-items:center;gap:5px;font-size:9px;display:flex}.sidebar-post-foot>.carbon-icon{color:#777;opacity:0;transition:opacity .2s,transform .2s;transform:translate(-5px)}.sidebar-post-link:hover .sidebar-post-title{color:#555}.sidebar-post-link:hover .sidebar-post-foot>.carbon-icon{opacity:1;transform:none}.sidebar-post-link:focus-visible .sidebar-post-foot>.carbon-icon{opacity:1;transform:none}.sidebar-comment-carousel{border:1px solid var(--line);border-radius:3px;margin:0 4px;padding:14px 15px 12px}.sidebar-comment-track{min-height:132px}.sidebar-comment-slide[hidden]{display:none}.sidebar-comment-slide p{font-family:var(--font-serif);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:15px;line-height:1.75;display:-webkit-box;overflow:hidden}.sidebar-comment-slide p.typing:after{content:"";vertical-align:-.12em;background:currentColor;width:1px;height:1em;margin-left:3px;animation:.7s step-end infinite comment-caret;display:inline-block}.sidebar-comment-slide footer{justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.sidebar-comment-source{flex-direction:column;gap:3px;min-width:0;display:flex}.sidebar-comment-source>strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.sidebar-comment-source a{min-width:0;color:var(--muted);align-items:center;gap:5px;font-size:10px;display:inline-flex}.sidebar-comment-source a span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar-comment-source a .carbon-icon{flex:none}.sidebar-comment-source a:hover{color:var(--ink)}.sidebar-comment-slide footer time{color:var(--muted);font-family:var(--font-mono);flex:none;font-size:9px}.sidebar-comment-controls{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;display:flex;position:relative}.sidebar-comment-controls:before{background:var(--ink);content:"";transform-origin:0;width:100%;height:1px;position:absolute;top:-1px;left:0;transform:scaleX(0)}.comment-counting .sidebar-comment-controls:before{animation:4.2s linear forwards comment-progress}.comment-paused .sidebar-comment-controls:before{animation-play-state:paused}.sidebar-comment-controls>span{color:var(--muted);font-family:var(--font-mono);font-size:9px}.sidebar-comment-controls b{color:var(--ink);font-weight:500}.sidebar-comment-controls>div{gap:4px;display:flex}.sidebar-comment-controls button{border:1px solid var(--line);width:30px;height:30px;color:var(--ink);cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.sidebar-comment-controls button:hover{border-color:var(--ink)}.sidebar-comment-controls button:disabled{cursor:default;opacity:.35}@keyframes comment-caret{50%{opacity:0}}@keyframes comment-progress{to{transform:scaleX(1)}}.sidebar-tags{flex-wrap:wrap;gap:8px;padding:14px 4px 18px;display:flex}.sidebar-tags a{border:1px solid #d8d8d8;align-items:center;gap:6px;min-height:30px;padding:5px 9px;font-size:11px;transition:border-color .2s,background-color .2s;display:inline-flex}.sidebar-tags a:hover{border-color:var(--ink);background:#f7f7f7}.sidebar-tags span{color:#999;font-size:9px}.archive-page{max-width:1000px;padding:144px 20px 20px}.archive-timeline{position:relative}.archive-timeline:before{content:"";background:#d7d7d7;width:1px;position:absolute;top:10px;bottom:32px;left:144px;transform:translate(-50%)}.archive-year{grid-template-columns:110px minmax(0,1fr);gap:34px;margin-bottom:64px;display:grid}.archive-year:last-child{margin-bottom:0}.archive-year>header{padding-top:1px}.archive-year h2{font-family:var(--font-serif);margin:0;font-size:30px;font-weight:500;line-height:1}.archive-year>header span{color:var(--muted);letter-spacing:0;margin-top:10px;font-size:9px;display:block}.archive-year ol{margin:0;padding:0 0 0 28px;list-style:none;position:relative}.archive-year li{grid-template-columns:52px minmax(0,1fr);align-items:baseline;gap:16px;min-height:42px;padding:0 0 19px;display:grid;position:relative}.archive-year li:last-child{padding-bottom:0}.archive-year li:before{z-index:1;box-sizing:border-box;content:"";background:#888;border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:6px;left:-32px;box-shadow:0 0 0 1px #888}.archive-year time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.archive-year a{overflow-wrap:anywhere;font-size:14px;line-height:1.65}.archive-year a:hover{color:var(--hover)}.links-page{max-width:var(--reading-width)}.links-page-header{margin-bottom:48px}.links-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.friend-link{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:190px;padding:20px 18px 22px;transition:background-color .25s;display:block;position:relative}.friend-link:hover{background:#fafaf8}.friend-link:focus-visible{outline:1px solid var(--ink);outline-offset:-1px}.friend-link-index{color:#aaa;font-family:var(--font-mono);font-size:9px;display:block}.friend-link-content{min-width:0;display:block}.friend-link-mark{width:42px;height:42px;font-family:var(--font-serif);border:1px solid #bbb;place-items:center;margin:24px 0 17px;font-size:19px;display:grid;overflow:hidden}.friend-link-mark img{object-fit:cover;width:100%;height:100%;display:block}.friend-link-copy{min-width:0;display:block}.friend-link-copy strong{font-family:var(--font-serif);text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:600;line-height:1.35;display:block;overflow:hidden}.friend-link-copy small{color:var(--muted);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:7px;font-size:11px;line-height:1.55;display:-webkit-box;overflow:hidden}.friend-link>.carbon-icon{color:#777;opacity:0;transition:opacity .2s,transform .2s;position:absolute;top:17px;right:15px;transform:translate(-5px,5px)}.friend-link:hover>.carbon-icon{opacity:1;transform:none}.friend-link:focus-visible>.carbon-icon{opacity:1;transform:none}.links-content{margin-top:72px;padding-top:12px}.links-page .comments-area{margin-top:88px}.post-page{padding:144px 20px 0}.post-header{text-align:center;margin:0 auto 54px}.post-header h1{max-width:960px;font-family:var(--font-serif);overflow-wrap:anywhere;margin:0 auto 22px;font-size:36px;font-weight:500;line-height:1.4}.post-byline{letter-spacing:0;text-transform:capitalize;font-size:12px}.post-byline a:hover{color:var(--hover)}.page-header{margin-bottom:44px}.post-toc{z-index:10;width:160px;max-height:calc(100vh - 136px);position:fixed;top:104px;left:max(20px,50% - 600px);overflow-y:auto}.post-toc[hidden]{display:none}.post-toc-inner{border-top:1px solid var(--ink);padding-top:14px}.post-toc h2{margin:0 0 12px;font-size:12px;font-weight:700}.post-toc nav{gap:2px;display:grid}.post-toc a{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;padding:5px 0 5px 12px;font-size:11px;line-height:1.5;transition:color .2s;display:block;position:relative;overflow:hidden}.post-toc a:before{background:var(--ink);content:"";opacity:0;width:2px;position:absolute;top:8px;bottom:8px;left:0}.post-toc a:hover{color:var(--ink)}.post-toc a.active{color:var(--ink);font-weight:600}.post-toc a.active:before{opacity:1}.post-toc a.toc-level-3{padding-left:22px}.post-toc a.toc-level-4{padding-left:32px}.post-content{color:#333;font-family:var(--font-sans);font-size:17px;line-height:1.95}.post-content>p,.post-content>h1,.post-content>h2,.post-content>h3,.post-content>h4,.post-content>h5,.post-content>h6,.post-content>ul,.post-content>ol,.post-content>dl,.post-content>blockquote,.post-content>pre,.post-content>table,.post-content>details,.post-content>.table-wrap,.post-content>.footnotes,.post-content>.post-inline-toc{max-width:var(--reading-width);margin-inline-start:auto;margin-inline-end:auto}.post-inline-toc{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);margin-top:32px;margin-bottom:42px;padding:20px 0}.post-inline-toc-title{margin-bottom:12px;font-size:13px;font-weight:700}.post-content .post-inline-toc ol{margin:0;padding-left:22px;list-style:decimal-leading-zero}.post-content .post-inline-toc>ol{padding-left:30px}.post-inline-toc li{color:var(--muted);margin:3px 0;padding-left:4px;font-size:13px;line-height:1.65}.post-inline-toc a{color:var(--ink);border-bottom:0}.post-inline-toc a:hover{color:var(--hover)}.post-content p{text-align:justify;margin-top:22px;margin-bottom:22px}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{color:var(--ink);font-family:var(--font-serif);scroll-margin-top:88px;font-weight:500;line-height:1.4}.post-content h1{margin-top:2.4em;margin-bottom:.9em;font-size:30px}.post-content h2{border-bottom:1px solid var(--line);margin-top:2.5em;margin-bottom:1em;padding-bottom:10px;font-size:25px}.post-content h3{margin-top:2.2em;margin-bottom:.8em;font-size:21px}.post-content h4{margin-top:2em;margin-bottom:.7em;font-size:18px;font-weight:600}.post-content h5,.post-content h6{font-family:var(--font-sans);margin-top:1.8em;margin-bottom:.6em;font-size:15px;font-weight:700}.post-content a{overflow-wrap:anywhere;word-break:break-word;border-bottom:1px solid #aaa;transition:border-color .2s,color .2s}.post-content a:hover{border-color:var(--ink);color:#555}.post-content img{cursor:default;max-width:100%;margin:32px auto;display:block}body.is-post .post-content img{cursor:zoom-in}.post-image-frame{width:-moz-fit-content;width:fit-content;max-width:100%;margin:32px auto;display:block;position:relative}.post-image-frame .post-image-frame,.post-image-frame>img{margin:0}.post-image-loader{color:#777;pointer-events:none;background:#f3f3f1;place-items:center;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.post-image-loader .carbon-icon{animation:.85s linear infinite post-image-loading}@keyframes post-image-loading{to{transform:rotate(360deg)}}.image-lightbox[hidden]{display:none}.image-lightbox{z-index:1200;color:#fff;place-items:center;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.image-lightbox-backdrop{cursor:zoom-out;background:#0c0c0cf0;border:0;border-radius:0;width:100%;height:100%;padding:0;position:absolute;top:0;bottom:0;left:0;right:0}.image-lightbox-stage{z-index:1;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;width:calc(100% - 160px);height:calc(100% - 120px);display:flex;position:relative;overflow:hidden}.image-lightbox-stage img{object-fit:contain;cursor:grab;pointer-events:auto;touch-action:none;transform-origin:50%;-webkit-user-select:none;user-select:none;max-width:100%;max-height:calc(100% - 34px);transition:transform .12s ease-out;display:block}.image-lightbox-stage img.is-dragging{cursor:grabbing;transition:none}.image-lightbox-stage p{color:#ccc;text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:720px;margin:12px 0 0;font-size:11px;overflow:hidden}.image-lightbox-close,.image-lightbox-nav{z-index:2;color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff61;border-radius:0;place-items:center;width:42px;height:42px;padding:0;display:grid;position:absolute}.image-lightbox-close{top:24px;right:24px}.image-lightbox-prev{top:50%;left:24px;transform:translateY(-50%)}.image-lightbox-next{top:50%;right:24px;transform:translateY(-50%)}.image-lightbox-close:hover,.image-lightbox-nav:hover{color:#111;background:#fff;border-color:#fff}.image-lightbox-count{z-index:2;color:#bbb;font-family:var(--font-mono);font-size:10px;position:absolute;top:36px;left:24px}.image-lightbox-open{overflow:hidden}.post-content figure{max-width:100%;margin:36px auto}.post-content figure img{margin:0 auto 12px}.post-content figcaption{color:var(--muted);text-align:center;font-size:12px;line-height:1.7}.post-content video,.post-content iframe{max-width:100%;margin:32px auto;display:block}.post-content ul,.post-content ol{margin-top:20px;margin-bottom:20px;padding-left:26px}.post-content ul{list-style:square}.post-content li{margin:.35em 0;padding-left:3px}.post-content li::marker{color:#888;font-family:var(--font-mono);font-size:.82em}.post-content ol>li::marker{font-variant-numeric:tabular-nums}.post-content li>ul,.post-content li>ol{margin-top:.35em;margin-bottom:.35em}.post-content li>p{margin-top:8px;margin-bottom:8px}.post-content li>pre,.post-content li>blockquote,.post-content li>.table-wrap{max-width:none;margin:18px 0 22px}.post-content dl{margin-top:24px;margin-bottom:24px}.post-content dt{margin-top:18px;font-weight:700}.post-content dd{color:#555;margin:4px 0 0 24px}.post-content blockquote{border-left:2px solid var(--ink);color:#555;margin-top:32px;margin-bottom:32px;padding:4px 0 4px 22px}.post-content blockquote p{text-align:left;margin:10px 0}.post-content blockquote cite{color:var(--muted);margin-top:12px;font-size:13px;font-style:normal;display:block}.post-content pre{color:#e5e7eb;-moz-tab-size:4;tab-size:4;background:#202328;border:1px solid #30343b;border-radius:0;margin-top:30px;margin-bottom:30px;font-size:13px;line-height:1.75;position:relative;overflow-x:auto;padding:44px 20px 20px!important}.post-content code,.post-content kbd{font-family:var(--font-mono);word-break:break-word}.post-content :not(pre)>code{color:#444;background:#f6f6f4;border:1px solid #e1e1e1;padding:2px 5px;font-size:.86em}.post-content kbd{text-align:center;background:#fafafa;border:1px solid #bbb;border-bottom-width:2px;min-width:24px;padding:1px 6px;font-size:.78em;line-height:1.6;display:inline-block}.post-content pre code{color:inherit;word-break:normal;background:0 0;padding:0;display:block;overflow:visible}.code-language{color:#8b949e;text-transform:uppercase;font-size:10px;font-weight:700;line-height:20px;position:absolute;top:11px;left:18px}.code-copy{z-index:2;color:#b9c0ca;cursor:pointer;background:#292d33;border:1px solid #444a53;border-radius:0;height:26px;padding:0 8px;font-size:11px;position:absolute;top:8px;right:10px}.code-copy:hover{color:#fff;border-color:#6d7682}.code-copy:focus-visible{outline-offset:2px;outline:2px solid #86a6df}.hljs-comment,.hljs-quote{color:#8b949e;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:#ff7b72}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition{color:#a5d6ff}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:#79c0ff}.hljs-variable,.hljs-template-variable,.hljs-selector-class,.hljs-selector-id{color:#ffa657}.hljs-function .hljs-title,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-property{color:#7ee787}.hljs-deletion{color:#ffdcd7;background:#67060c}.post-content mark{color:inherit;background:#fff1a8;padding:1px 3px}.post-content del{color:#999;text-decoration-color:#777}.post-content sup,.post-content sub{font-size:.72em;line-height:0}.post-content hr{max-width:var(--reading-width);border:0;border-bottom:1px solid var(--line);margin:52px auto}.table-wrap{border:1px solid var(--ink);scrollbar-color:#aaa transparent;scrollbar-width:thin;margin-top:34px;margin-bottom:34px;overflow-x:auto}.post-content table{border-collapse:collapse;color:#444;width:100%;min-width:560px;font-size:14px;line-height:1.6}.post-content caption{color:var(--muted);text-align:left;padding:0 2px 14px;font-size:11px}.post-content th,.post-content td{border:0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:15px 12px}.post-content th{color:var(--muted);font-family:var(--font-sans);white-space:nowrap;background:0 0;font-size:10px;font-weight:700}.post-content tbody tr{transition:background-color .2s}.post-content tbody tr:hover{background:#f8f8f6}.post-content tbody tr:last-child td{border-bottom:0}.post-content tbody td:first-child{color:var(--ink);font-family:var(--font-serif);font-weight:600}.post-content th[align=center],.post-content td[align=center]{text-align:center}.post-content th[align=right],.post-content td[align=right]{text-align:right}.post-content details{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);margin-top:26px;margin-bottom:26px}.post-content summary{color:var(--ink);cursor:pointer;padding:13px 2px;font-weight:700}.post-content details[open]{padding-bottom:12px}.post-content details[open] summary{border-bottom:1px solid var(--line)}.post-content details>:not(summary){margin-left:12px;margin-right:12px}.post-content>.task-list{padding-left:0;list-style:none}.post-content .task-list .task-list{padding-left:26px;list-style:none}.post-content .task-list-item{padding-left:25px;list-style:none;position:relative}.post-content .task-list-item>input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:default;opacity:1;background:0 0;border:1px solid #999;border-radius:0;place-items:center;width:16px;height:16px;margin:0;padding-left:0;display:grid;position:absolute;top:calc(.975em - 8px);left:0}.post-content .task-list-item>input[type=checkbox]:after{content:"";opacity:0;border-bottom:1.5px solid #fff;border-right:1.5px solid #fff;width:4px;height:8px;transition:opacity .15s,transform .15s;transform:translateY(-1px)rotate(45deg)scale(.6)}.post-content .task-list-item>input[type=checkbox]:checked{border-color:var(--ink);background:var(--ink)}.post-content .task-list-item>input[type=checkbox]:checked:after{opacity:1;transform:translateY(-1px)rotate(45deg)scale(1)}.post-content .task-list-item.task-completed{color:#777}.post-content .footnotes{border-top:1px solid var(--ink);color:var(--muted);margin-top:52px;padding-top:18px;font-size:13px}.post-content .footnotes ol{padding-left:22px}.post-content .footnote-ref,.post-content .footnote-backref{font-family:var(--font-mono);border-bottom:0;font-size:.85em}.post-content form.protected{width:100%;max-width:var(--reading-width);border-top:1px solid var(--ink);border-bottom:1px solid var(--line);margin:54px auto 24px;padding:28px 0 30px}.post-content form.protected:before{color:var(--muted);font-family:var(--font-mono);content:"PROTECTED / ACCESS";margin-bottom:8px;font-size:9px;font-weight:700;display:block}.post-content form.protected .word{font-family:var(--font-serif);margin:0 0 24px;font-size:23px;font-weight:500;line-height:1.45}.post-content form.protected>p:last-child{grid-template-columns:minmax(0,1fr) 92px;margin:0;display:grid}.post-content form.protected input[type=password]{border:1px solid var(--ink);width:100%;height:48px;color:var(--ink);font-family:var(--font-mono);background:#fff;border-right:0;border-radius:0;outline:0;padding:0 14px;font-size:13px}.post-content form.protected input[type=password]:focus{box-shadow:inset 0 0 0 1px var(--ink)}.post-content form.protected input[type=submit]{border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;border-radius:0;width:92px;height:48px;padding:0;font-size:12px;font-weight:700}.post-content form.protected input[type=submit]:hover{color:var(--ink);background:#fff}.protected-post-page .post-footer,.protected-post-page .article-end,.protected-post-page .post-navigation,.protected-post-page .comments-area{display:none}.mermaid-diagram{max-width:var(--reading-width);border:1px solid var(--line);text-align:center;background:#fff;min-height:120px;margin:34px auto;padding:28px 18px;overflow-x:auto}.mermaid-diagram .mermaid{justify-content:center;min-width:max-content;display:flex}.mermaid-diagram svg{max-width:100%;height:auto;margin:auto;display:block}.mermaid-diagram.mermaid-error{min-height:0;color:var(--muted);font-family:var(--font-mono);text-align:left;white-space:pre-wrap;border-color:#aaa;font-size:12px}.post-footer{max-width:var(--reading-width);color:var(--muted);margin:76px auto 58px;padding:0 2px}.post-details{justify-content:space-between;align-items:flex-start;gap:28px;display:flex}.post-detail-group{flex-direction:column;gap:6px;min-width:0;display:flex}.post-detail-group>span{color:#999;font-family:var(--font-mono);font-size:9px;font-weight:700}.post-detail-group time,.post-tags{color:var(--ink);font-family:var(--font-serif);font-size:14px;line-height:1.55}.post-detail-tags{text-align:right;align-items:flex-end;max-width:62%}.post-tags a{color:var(--ink);border-bottom:1px solid var(--line)}.post-tags a:hover{color:var(--ink)}.article-end{max-width:var(--reading-width);color:#999;font-family:var(--font-mono);text-align:center;margin:0 auto;font-size:9px;font-weight:600}.post-navigation{max-width:var(--reading-width);border-top:1px solid var(--ink);grid-template-columns:1fr 1fr;margin:28px auto 80px;display:grid}.post-navigation-item{flex-direction:column;justify-content:space-between;gap:20px;min-width:0;min-height:126px;padding:24px 26px;display:flex}.post-navigation-next{border-left:1px solid var(--line);text-align:right;align-items:flex-end}.post-navigation-label{color:var(--muted);align-items:center;gap:8px;margin:0;font-size:10px;font-weight:700;display:flex}.post-navigation a,.post-navigation-empty{font-family:var(--font-serif);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:18px;font-weight:500;line-height:1.45;display:-webkit-box;overflow:hidden}.post-navigation a{color:var(--ink)}.post-navigation a:hover{color:var(--hover)}.post-navigation-empty{color:#aaa}.comments-area{max-width:var(--reading-width);border-top:1px solid var(--ink);margin:72px auto 0;padding-top:0}.comments-heading{justify-content:space-between;align-items:center;gap:24px;min-height:76px;margin-bottom:8px;display:flex}.comments-heading h2{font-family:var(--font-serif);align-items:baseline;gap:10px;margin:0;font-size:28px;font-weight:500;display:flex}.comments-heading h2 span{color:var(--muted);font-family:var(--font-mono);font-size:11px;font-weight:500}.comment-compose-trigger{border:1px solid var(--ink);width:auto;height:40px;color:var(--ink);cursor:pointer;background:0 0;border-radius:0;justify-content:center;align-items:center;gap:8px;padding:0 11px;font-size:11px;font-weight:700;transition:background-color .2s,color .2s;display:inline-flex}.comment-compose-trigger .carbon-icon{flex:none}.comment-compose-trigger:hover{background:var(--ink);color:#fff}.comment-compose-trigger:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.comments-closed-state{color:var(--muted);font-size:10px;font-weight:600}.comments-closed-empty{border-top:1px solid var(--line);min-height:150px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:28px 16px;display:flex}.comments-closed-empty .carbon-icon{color:#999;margin-bottom:5px}.comments-closed-empty strong{color:var(--ink);font-family:var(--font-serif);font-size:18px;font-weight:500}.comments-closed-empty span{font-size:11px}.comment-list,.comment-list ol{margin:0;padding:0;list-style:none}.comment-list{border-top:0}.comment-list .comment-list{border-top:0;margin-top:0}.comment-body{position:relative}.comment-parent{background:0 0;margin:0}.comment-avatar{color:#555;width:30px;height:30px;font-family:var(--font-mono);background:#eeeeec;border-radius:50%;grid-area:1/1/span 4;place-items:center;font-size:9px;font-weight:700;display:grid}.comment-avatar.avatar-variant-1{color:#365044;background:#e9ece8}.comment-avatar.avatar-variant-2{color:#59483e;background:#ece9e5}.comment-avatar.avatar-variant-3{color:#3e4d5c;background:#e7eaed}.comment-avatar.avatar-variant-4{color:#624343;background:#eee8e8}.comment-avatar.avatar-variant-5{color:#55543d;background:#ebebe5}.comment-avatar.avatar-variant-6{color:#50475c;background:#e9e7ec}.comment-main{grid-template-columns:30px minmax(0,1fr);align-items:start;column-gap:10px;min-width:0;padding:4px 4px 16px;transition:box-shadow .35s;display:grid}.comment-main:before{content:none;display:none}.comment-main>*{grid-column:2}.comment-main>.comment-avatar{grid-area:1/1/span 4}.comment-parent>.comment-main{margin:0}.comment-children{background:0 0;border-top:0;min-width:0}.comment-parent>.comment-children{background:0 0;margin:0 4px 8px 42px;padding:2px 0}.comment-child>.comment-main{background:0 0;border-top:0;grid-template-columns:24px minmax(0,1fr);align-items:start;column-gap:8px;margin:0;padding:8px 0;display:grid}.comment-child+.comment-child{margin-top:3px}.comment-child .comment-avatar{width:24px;height:24px;font-size:8px}.comment-child>.comment-main:hover{background:0 0}.comment-child>.comment-main:before{content:none;display:none}.comment-child .comment-author{font-size:10px}.comment-child .comment-meta{font-size:10px;line-height:1.4}.comment-compact-copy{color:#444;min-width:0;font-size:14px;line-height:1.7}.comment-compact-header{flex-wrap:wrap;align-items:baseline;gap:7px;width:100%;min-width:0;display:flex}.comment-compact-identity{align-items:center;gap:7px;min-width:0;display:flex}.comment-compact-body{margin-top:3px}.comment-compact-body>span:first-child{color:var(--muted);font-size:12px}.comment-child .comment-content{max-width:none;font-size:12px;line-height:inherit;margin:0;display:inline}.comment-child .comment-content p{margin:0;display:inline}.comment-child .comment-reference{color:var(--ink);margin:0;font-size:12px;font-weight:700;display:inline}.comment-child .comment-reply{margin:0}.comment-child .comment-children{background:0 0;margin-left:0}.comment-body.comment-new>.comment-main{box-shadow:none;background:#f1f1ee}.comment-by-author>.comment-main:before{border-right-color:var(--ink);color:var(--ink)}.comment-header{justify-content:flex-start;align-items:baseline;gap:9px;display:flex}.comment-identity{flex-wrap:wrap;align-items:center;gap:6px 9px;min-width:0;display:flex}.comment-author{color:var(--ink);font-family:var(--font-serif);font-size:10px;font-style:normal;font-weight:600;line-height:1.4}.comment-author a{color:inherit}.comment-author a:hover{color:var(--hover)}.comment-badge{border-left:1px solid var(--line);color:var(--muted);padding-left:9px;font-size:9px;font-weight:700;line-height:1.4}.comment-meta{color:#999;font-family:var(--font-mono);flex:none;font-size:10px}.comment-meta:hover{color:var(--ink)}.comment-content{color:#343434;overflow-wrap:anywhere;width:100%;max-width:none;margin-top:3px;font-size:12px;line-height:1.7}.comment-content p{margin:0 0 10px}.comment-content p:last-child{margin-bottom:0}.comment-reply{text-align:left;align-items:center;gap:12px;margin-top:13px;font-size:12px;font-weight:500;display:flex}.comment-inline-actions{flex:none;justify-content:flex-end;margin:0 0 0 auto}.comment-child .comment-inline-actions{margin:0 0 0 auto}.comment-inline-actions .comment-delete{order:-1}.comment-reply a{color:var(--muted);border-bottom:1px solid #0000;padding-bottom:2px;display:inline-block}.comment-reply a:hover{border-color:var(--ink);color:var(--ink)}.comment-reply .comment-delete:hover{color:#8b2e2e;border-color:#8b2e2e}.comment-reference{color:var(--muted);margin-bottom:9px;font-size:10px;display:block}.comment-reference:hover{color:var(--ink)}.comment-awaiting-moderation{color:#8a6421;font-size:11px}.comment-modal[hidden]{display:none}.comment-modal{z-index:1100;place-items:center;padding:24px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.comment-modal-backdrop{cursor:default;background:#1414146b;border:0;border-radius:0;width:100%;height:100%;padding:0;position:absolute;top:0;bottom:0;left:0;right:0}.comment-modal-dialog{border:1px solid var(--ink);background:#fff;width:min(680px,100%);max-height:min(760px,100vh - 48px);position:relative;overflow:auto;box-shadow:0 22px 70px #00000029}.comment-modal-heading{border-bottom:1px solid var(--line);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:24px;min-height:84px;padding:20px 24px;display:flex}.comment-modal-dialog.is-dragging{box-shadow:0 28px 84px #00000038}.comment-modal-heading span{color:var(--muted);margin-bottom:5px;font-size:9px;font-weight:700;display:block}.comment-modal-heading h3{font-family:var(--font-serif);margin:0;font-size:24px;font-weight:500}.comment-modal-close{border:1px solid var(--line);width:36px;height:36px;color:var(--ink);cursor:pointer;background:0 0;border-radius:0;flex:0 0 36px;place-items:center;padding:0;display:grid}.comment-modal-close:hover{border-color:var(--ink)}.comment-modal-open{overflow:hidden}.comment-respond{margin:0;padding:24px}.cancel-comment-reply{font-size:11px}.cancel-comment-reply a{color:var(--muted);margin-bottom:14px;display:inline-block}.cancel-comment-reply a:hover{color:var(--ink)}.comment-respond label{margin-bottom:8px;font-size:11px;font-weight:700;display:block}.comment-respond textarea,.comment-respond input{background:0 0;border:0;border-bottom:1px solid #bdbdbd;border-radius:0;outline:none;width:100%;transition:border-color .2s}.comment-respond textarea{resize:vertical;border-top:1px solid #bdbdbd;min-height:132px;padding:14px 0;display:block}.comment-fields{grid-template-columns:repeat(3,1fr);gap:22px;margin-top:24px;display:grid}.comment-fields input{padding:4px 0 10px;font-size:13px}.comment-respond textarea::placeholder,.comment-respond input::placeholder{color:#aaa;opacity:1}.comment-respond textarea:focus,.comment-respond input:focus{border-color:var(--ink)}.comment-form-footer{justify-content:space-between;align-items:center;gap:20px;margin-top:28px;display:flex}.comment-form-footer p{color:var(--muted);margin:0;font-size:11px}.comment-respond button{border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;border-radius:0;justify-content:space-between;align-items:center;gap:18px;min-width:136px;min-height:42px;margin:0;padding:9px 16px;display:inline-flex}.comment-respond button:hover{color:var(--ink);background:#fff}.comment-respond button:disabled{cursor:wait;opacity:.55}.comment-respond button.is-loading .carbon-icon{display:none}.comment-respond button.is-loading:after{content:"";border:1px solid;border-right-color:#0000;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite comment-submit-spin}.comment-form-status{border-left:2px solid var(--ink);background:#f5f5f5;margin-bottom:14px;padding:10px 12px;font-size:13px;display:none}.comment-form-status.visible{display:block}.comment-form-status.loading{color:var(--muted)}.comment-form-status.error{color:#7e2020;border-color:brown}.comment-form-status.success{color:#205d3f;border-color:#25704a}.logged-in{color:var(--muted);font-size:12px}@keyframes comment-submit-spin{to{transform:rotate(360deg)}}.site-footer{color:var(--muted);text-align:center;padding:74px 20px 66px;font-size:13px}.site-footer p{letter-spacing:0;margin:18px 0 0}.site-footer p a{color:var(--ink);border-bottom:1px solid var(--line)}.site-footer p a:hover{border-color:var(--ink)}.social-links{flex-wrap:wrap;justify-content:center;gap:12px 22px;display:flex}.social-links a{color:var(--ink);font-weight:700}.social-links a:hover{color:var(--hover)}.floating-tools{z-index:20;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:54px;right:36px}.back-to-top,.jump-to-comments{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);cursor:pointer;background:#fffffff0;border-radius:0;place-items:center;padding:0;line-height:1;display:none}.floating-tools .carbon-icon{margin:auto}.jump-to-comments{display:grid}.back-to-top:hover,.jump-to-comments:hover{border-color:var(--ink)}.back-to-top.visible{display:grid}.reading-progress{z-index:1001;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.reading-progress span{background:var(--ink);width:0;height:100%;display:block}@media (max-width:1160px){.post-toc{width:min(100%, var(--reading-width));max-height:none;margin:0 auto 54px;position:static;overflow:visible}}@media (max-width:768px){.site-menu,.menu-bar,.menu-inner{height:64px}.menu-inner{position:relative}.site-logo{z-index:2;width:auto;max-width:180px;position:absolute;top:21px;left:50%;transform:translate(-50%)}.site-logo.has-image{width:104px}.site-logo img{object-position:center}.menu-toggle{z-index:3;width:40px;height:40px;color:var(--ink);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;line-height:1;display:grid;position:absolute;top:12px;left:12px}.menu-toggle:hover{background:#f4f4f4}.menu-toggle>span{grid-area:1/1;place-items:center;width:20px;height:20px;transition:opacity .2s,transform .2s;display:grid}.menu-icon-close{opacity:0;transform:rotate(-45deg)scale(.8)}.menu-toggle[aria-expanded=true] .menu-icon-open{opacity:0;transform:rotate(45deg)scale(.8)}.menu-toggle[aria-expanded=true] .menu-icon-close{opacity:1;transform:none}.primary-nav{z-index:1;width:min(320px,86vw);height:calc(100vh - 64px);opacity:1;pointer-events:none;visibility:hidden;background:#fff;border:0;border-right:1px solid #2828281a;border-radius:0;height:calc(100dvh - 64px);max-height:none;padding:14px 12px;transition:transform .28s,visibility 0s linear .28s;display:block;position:fixed;top:64px;bottom:0;left:0;overflow-y:auto;transform:translate(-100%);box-shadow:18px 0 50px #28282824}.primary-nav.open{pointer-events:auto;visibility:visible;transition-delay:0s;transform:translate(0)}.primary-nav a{border-radius:4px;justify-content:flex-start;height:48px;padding:0 14px}.primary-nav a:hover{background:#f5f5f5}.primary-nav a.active{background:#f1f1f1}.primary-nav a:after{width:2px;height:auto;top:14px;bottom:14px;left:0;transform:scaleY(.25)}.primary-nav a.active:after{transform:scaleY(1)}.search-trigger{border-radius:4px;margin:0;position:absolute;top:12px;right:12px}.search-dialog{width:calc(100% - 24px);margin-top:76px;padding:0 18px 26px}.search-form input{height:56px;font-size:24px}.menu-backdrop{z-index:0;opacity:0;pointer-events:none;background:#14141433;transition:opacity .25s;display:block;position:fixed;top:64px;bottom:0;left:0;right:0}body.menu-open .menu-backdrop{opacity:1;pointer-events:auto}.archive-main{width:90%;padding-top:84px}.home-intro{min-height:0;padding:58px 0 44px;display:block}.home-kicker{margin-bottom:22px}.home-intro h1{font-size:40px;line-height:1.2}.home-intro-side{margin-top:34px;padding-bottom:0}.home-intro-side p{margin-bottom:20px}.home-section-heading{padding:34px 0 18px}.archive-layout,.post-grid{display:block}.grid-item{border:0;width:100%;margin-bottom:12px}.card-image{height:200px}.card-image:after{background:0 0}.card-title{padding-inline-start:16px;padding-inline-end:16px}.card-open{display:none}body.is-home .post-grid{display:block}body.is-home .grid-item{margin-bottom:16px}body.is-home .card-image,body.home-page-first .grid-item:first-child .card-image{height:180px;background-image:none!important}body.is-home .card-image:before{left:16px;right:16px}body.is-home .card-title{padding:18px 16px 20px}body.is-home .card-meta{left:16px;right:16px}body.is-home .card-title h2,body.home-page-first .grid-item:first-child .card-title h2{font-size:22px}body.is-home .card-title p{display:none}.archive-title h1{font-size:32px}.pagination{margin-top:34px;padding:18px 0 0}.pagination li:not(.prev):not(.next){display:none}.pagination-summary{height:38px;color:var(--muted);font-family:var(--font-mono);align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.pagination-summary strong{color:var(--ink);font-size:14px;font-weight:700}.pagination-summary i{color:#bbb;font-style:normal}.site-sidebar{margin-top:54px;position:static}.archive-page{width:90%;padding:112px 0 0}.links-page{width:90%}.links-page-header{margin-bottom:36px}.links-grid{grid-template-columns:minmax(0,1fr)}.friend-link{grid-template-columns:minmax(0,1fr) 20px;align-items:center;gap:14px;min-height:100px;padding:16px;display:grid}.friend-link-index{display:none}.friend-link-content{grid-column:1;align-items:center;gap:14px;min-width:0;display:flex}.friend-link-mark{flex:0 0 46px;width:46px;height:46px;margin:0;font-size:20px}.friend-link-copy{padding-top:1px}.friend-link-copy strong{font-size:17px;line-height:1.3}.friend-link-copy small{margin-top:5px;font-size:11px;line-height:1.5}.friend-link>.carbon-icon{opacity:1;position:static;transform:none}.links-content{margin-top:52px}.links-page .comments-area{margin-top:60px}.archive-year{margin-bottom:48px;display:block}.archive-timeline:before{left:3px}.archive-year>header{justify-content:space-between;align-items:baseline;margin-bottom:22px;display:flex}.archive-year h2{font-size:26px}.archive-year>header span{margin-top:0}.archive-year ol{margin-left:3px;padding-left:24px}.archive-year li{grid-template-columns:46px minmax(0,1fr);gap:10px}.archive-year li:before{left:-28px}.post-page{width:90%;padding:112px 0 0}.post-toc{width:min(100%, var(--reading-width));max-height:none;margin:0 auto 44px;position:static;overflow:visible}.post-toc-inner{border-bottom:1px solid var(--line);padding:14px 0 12px}.post-toc nav{grid-template-columns:1fr}.post-toc a{white-space:normal;padding-block-start:6px;padding-block-end:6px;font-size:12px}.post-content pre{font-size:12px;padding:42px 14px 16px!important}.post-header{margin-bottom:42px}.post-header h1{font-size:24px}.post-content{font-size:16px;line-height:2}.post-content h1{font-size:24px}.post-content h2{padding-bottom:8px;font-size:21px}.post-content h3{font-size:18px}.post-content h4{font-size:17px}.post-content p{text-align:left}.post-content ul,.post-content ol{padding-left:22px}.post-content blockquote{margin-top:26px;margin-bottom:26px;padding-left:16px}.post-content pre{margin-inline-start:0;margin-inline-end:0}.post-image-frame{margin-block-start:24px;margin-block-end:24px}.image-lightbox-stage{width:calc(100% - 32px);height:calc(100% - 130px)}.image-lightbox-close{top:16px;right:16px}.image-lightbox-count{top:29px;left:16px}.image-lightbox-nav{top:auto;bottom:18px;transform:none}.image-lightbox-prev{left:16px}.image-lightbox-next{right:16px}.post-content th,.post-content td{padding:10px 8px}.post-content details>:not(summary){margin-left:4px;margin-right:4px}.post-content form.protected{margin-top:34px;padding:22px 0 24px}.post-content form.protected .word{margin-bottom:18px;font-size:20px}.post-content form.protected>p:last-child{grid-template-columns:minmax(0,1fr) 78px}.post-content form.protected input[type=submit]{width:78px}.post-footer{margin:56px auto 44px;padding:0}.post-details{flex-direction:column;gap:20px}.post-detail-tags{text-align:left;align-items:flex-start;max-width:none}.article-end{gap:12px}.post-navigation{grid-template-columns:1fr;margin:24px auto 56px}.post-navigation-item{gap:12px;min-height:100px;padding:18px 4px}.post-navigation-next{border-top:1px solid var(--line);text-align:left;border-left:0;align-items:flex-start}.post-navigation a,.post-navigation-empty{font-size:16px}.comments-area{margin-top:56px}.comments-heading{min-height:68px;margin-bottom:6px}.comments-heading h2{font-size:24px}.comment-compose-trigger{height:36px;padding-inline-start:10px;padding-inline-end:10px}.comment-main{grid-template-columns:30px minmax(0,1fr);column-gap:9px;padding:13px 0 12px}.comment-main:before{content:none;display:none}.comment-main>*{grid-column:2}.comment-avatar{width:30px;height:30px;font-size:9px}.comment-parent>.comment-children{background:0 0;border-top:0;margin:0 0 8px 8px;padding:2px 0}.comment-child>.comment-main{grid-template-columns:24px minmax(0,1fr);column-gap:7px;padding:7px 0}.comment-child .comment-avatar{width:24px;height:24px;font-size:8px}.comment-compact-header{gap:6px}.comment-compact-body{margin-top:3px}.comment-child .comment-children{margin-left:0}.comment-author,.comment-child .comment-author{font-size:10px}.comment-meta{margin-top:3px;font-size:10px}.comment-content{margin-top:3px;font-size:12px;line-height:1.7}.comment-child .comment-content{font-size:12px;line-height:1.7}.comment-reply{margin-top:8px}.comment-fields{grid-template-columns:1fr}.comment-header{display:flex}.comment-header>.comment-meta{margin-top:0;display:inline-block}.comment-modal{place-items:end center;padding:0}.comment-modal-dialog{border-bottom:0;border-left:0;border-right:0;width:100%;max-height:88vh}.comment-modal-heading{cursor:default;touch-action:auto;min-height:72px;padding:16px 18px}.comment-modal-heading h3{font-size:21px}.comment-respond{padding:20px 18px calc(20px + env(safe-area-inset-bottom))}.comment-form-footer{flex-direction:column;align-items:stretch}.comment-respond button{width:100%}.site-footer{padding-top:56px}.site-footer p{letter-spacing:0}.floating-tools{bottom:24px;right:12px}}@media (min-width:769px) and (max-width:1024px){.archive-main{width:calc(100% - 40px)}.home-intro{grid-template-columns:minmax(0,1.5fr) minmax(240px,1fr);gap:40px}.home-intro h1{font-size:52px}.archive-layout{grid-template-columns:minmax(0,7fr) minmax(250px,3fr);gap:28px}.post-grid{grid-template-columns:minmax(0,1fr)}body.home-page-paged .post-grid,.links-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.card-image{height:220px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important}.comment-counting .sidebar-comment-controls:before{animation:none;transform:scaleX(1)}}