:root{--paper:#fbfaf6;--paper-2:#f4f2eb;--paper-3:#edeae1;--ink:#17150f;--ink-2:#3d382e;--sub:#7a7466;--faint:#a9a296;--rule:#e4e0d4;--rule-2:#cfc9b8;--accent:#b04a2f;--accent-ink:#8e3a23;--accent-soft:#f3e6e0;--code-bg:#f6f4ee;--bg-mark:#f7e9c8;--shadow:0 1px 0 #17150f0a, 0 10px 30px -18px #17150f47;--serif:Georgia, "Times New Roman", "Songti SC", "Noto Serif SC", "Source Han Serif SC", STSong, SimSun, serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Cascadia Mono", "Courier New", monospace;--measure:40rem;--maxw:1200px;--pad:28px;--nav-h:60px;--radius:4px;--radius-lg:6px;color-scheme:light}[data-theme=dark]{--paper:#131210;--paper-2:#1b1a15;--paper-3:#232219;--ink:#f0ede5;--ink-2:#cdc8bb;--sub:#948d7e;--faint:#6c6558;--rule:#2c2a21;--rule-2:#3e3b2f;--accent:#e28a61;--accent-ink:#f0a882;--accent-soft:#2b1f18;--code-bg:#1a1914;--bg-mark:#47391a;--shadow:0 1px 0 #0000004d, 0 10px 30px -18px #000000b3;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 20px)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow-wrap:break-word;margin:0;font-size:16px;line-height:1.75}img,svg{max-width:100%}img{height:auto}a{color:inherit;text-decoration:none}a:hover{text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}hr{border:0}::selection{background:var(--accent-soft);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:99;background:var(--ink);color:var(--paper);border-radius:0 0 6px;padding:10px 18px;font-size:13px;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}main{min-height:50vh;display:block}.wrap{max-width:var(--maxw);padding:0 var(--pad);margin:0 auto}.narrow{max-width:calc(var(--measure) + var(--pad) * 2);padding:0 var(--pad);margin:0 auto}.layout{grid-template-columns:minmax(0,1fr) 268px;align-items:start;gap:64px;padding:52px 0 72px;display:grid}.masthead{z-index:50;background:var(--paper);background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:saturate(160%)blur(12px);border-top:3px solid var(--ink);border-bottom:1px solid var(--rule);position:sticky;top:0}.masthead__inner{max-width:var(--maxw);padding:0 var(--pad);height:var(--nav-h);align-items:center;gap:26px;margin:0 auto;display:flex}.brand{flex:none;align-items:center;gap:11px;display:flex}.brand__mark{background:var(--ink);width:26px;height:26px;color:var(--paper);font-family:var(--serif);border-radius:3px;flex:0 0 26px;place-items:center;font-size:15px;font-weight:700;line-height:1;display:grid}.brand__name{font-family:var(--serif);letter-spacing:-.01em;white-space:nowrap;font-size:18px;font-weight:600}.brand__sup{font-family:var(--sans);letter-spacing:.2em;color:var(--sub);text-transform:uppercase;white-space:nowrap;margin-left:2px;font-size:9.5px}.brand:hover .brand__name{color:var(--accent-ink)}.nav{align-items:center;gap:2px;margin-left:auto;display:flex}.nav__link{letter-spacing:.11em;color:var(--sub);border-radius:var(--radius);white-space:nowrap;padding:7px 13px;font-size:12.5px;transition:color .18s,background .18s}.nav__link:hover{color:var(--ink);background:var(--paper-2)}.nav__link[aria-current=page]{color:var(--ink);font-weight:600}.nav__divider{background:var(--rule);flex:none;width:1px;height:18px;margin:0 8px}.tools{flex:none;align-items:center;gap:4px;display:flex}.icon-btn{border-radius:var(--radius);width:34px;height:34px;color:var(--sub);place-items:center;padding:0;transition:color .18s,background .18s;display:grid}.icon-btn:hover{color:var(--ink);background:var(--paper-2)}.icon-btn svg{stroke:currentColor;fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px;display:block}.icon-btn--img img{object-fit:contain;border-radius:3px;width:24px;height:24px;transition:transform .18s;display:block}.icon-btn--img:hover img{transform:scale(1.08)}@media (prefers-reduced-motion:reduce){.icon-btn--img img,.icon-btn--img:hover img{transition:none;transform:none}}[data-theme=dark] .theme-toggle__light,.icon-btn .theme-toggle__dark{display:none}[data-theme=dark] .theme-toggle__dark{display:block}.nav-toggle{display:none}.progress{background:var(--accent);z-index:60;width:0;height:2px;transition:width .1s linear;position:fixed;top:0;left:0}.hero{border-bottom:1px solid var(--rule);padding:68px 0 52px}.hero__kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);align-items:center;gap:12px;margin-bottom:22px;font-size:11.5px;font-weight:600;display:flex}.hero__kicker:after{content:"";background:var(--rule-2);flex:1;max-width:120px;height:1px}.hero__title{font-family:var(--serif);letter-spacing:-.025em;text-wrap:balance;margin:0 0 20px;font-size:clamp(30px,4.6vw,54px);font-weight:600;line-height:1.22}.hero__title em{color:var(--accent);font-style:normal}.hero__lede{color:var(--ink-2);max-width:34rem;margin:0;font-size:16.5px}.hero__stats{border-top:1px solid var(--rule);flex-wrap:wrap;gap:44px;margin-top:38px;padding-top:26px;display:flex}.hero__stats div{align-items:baseline;gap:9px;display:flex}.hero__stats b{font-family:var(--serif);letter-spacing:-.02em;font-size:30px;font-weight:600;line-height:1}.hero__stats span{color:var(--sub);font-size:12.5px}.sec-head{border-bottom:2px solid var(--ink);align-items:baseline;gap:16px;margin-bottom:4px;padding-bottom:14px;display:flex}.sec-head h2{font-family:var(--serif);letter-spacing:-.01em;text-wrap:balance;margin:0;font-size:20px;font-weight:600}.sec-head__note{color:var(--sub);letter-spacing:.02em;white-space:nowrap;margin-left:auto;font-size:12px}.sec-head--tight{margin-top:34px}.list{margin:0}.item{border-bottom:1px solid var(--rule);grid-template-columns:96px minmax(0,1fr);gap:26px;padding:26px 0;transition:background .2s;display:grid;position:relative}.item:hover .item__title{color:var(--accent)}.item__date{font-family:var(--serif);color:var(--sub);flex-direction:column;padding-top:5px;line-height:1.1;display:flex}.item__day{color:var(--ink);letter-spacing:-.02em;font-size:26px;font-weight:600}.item__ym{letter-spacing:.09em;margin-top:5px;font-size:11.5px}.item__kicker{letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:7px;font-size:11px;font-weight:600}.item__kicker span{color:var(--faint);font-weight:400}.item__title{font-family:var(--serif);letter-spacing:-.015em;text-wrap:balance;margin:0 0 9px;font-size:21px;font-weight:600;line-height:1.4;transition:color .2s}.item__title a{color:inherit}.item__title a:after{content:"";position:absolute;inset:0}.item__excerpt{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 12px;font-size:14.5px;line-height:1.7;display:-webkit-box;overflow:hidden}.item__meta{color:var(--sub);flex-wrap:wrap;align-items:center;gap:14px;font-size:12px;display:flex}.item__meta .tags{flex-wrap:wrap;gap:6px;display:inline-flex}.dot{background:var(--faint);border-radius:50%;flex:0 0 3px;width:3px;height:3px;display:block}.tag{z-index:1;letter-spacing:.04em;color:var(--sub);border:1px solid var(--rule-2);border-radius:2px;padding:2px 8px;font-size:11px;transition:color .18s,border-color .18s,background .18s;position:relative}.tag:hover{color:var(--accent-ink);border-color:var(--accent);background:var(--accent-soft)}.pager{flex-wrap:wrap;align-items:center;gap:6px;padding:32px 0 0;display:flex}.pager a,.pager span.pager__num{min-width:34px;height:34px;font-size:13px;font-family:var(--serif);color:var(--sub);border:1px solid #0000;border-radius:3px;place-items:center;padding:0 10px;transition:color .18s,border-color .18s,background .18s;display:grid}.pager a:hover{border-color:var(--rule-2);color:var(--ink)}.pager a[aria-current=page]{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}.pager .gap{color:var(--faint);font-family:var(--serif);padding:0 2px}.pager__arrow{font-family:var(--sans)!important;padding:0 12px!important;font-size:12.5px!important}.pager__disabled{min-width:34px;height:34px;color:var(--faint);opacity:.5;place-items:center;padding:0 12px;font-size:12.5px;display:grid}.side{top:calc(var(--nav-h) + 26px);gap:34px;display:grid;position:sticky}.side__h{letter-spacing:.19em;text-transform:uppercase;color:var(--sub);border-bottom:1px solid var(--rule-2);margin-bottom:14px;padding-bottom:9px;font-size:11px;font-weight:600}.tree,.tree ul{margin:0;padding:0;list-style:none}.tree ul{border-left:1px solid var(--rule);padding-left:13px}.tree li{position:relative}.tree a{color:var(--ink-2);align-items:baseline;gap:8px;padding:4px 0;font-size:13.5px;transition:color .16s;display:flex}.tree a:hover{color:var(--accent)}.tree a .n,.tree a .count{font-family:var(--serif);color:var(--faint);margin-left:auto;padding-left:8px;font-size:11.5px}.tree>li>a{font-weight:600;font-family:var(--serif);color:var(--ink);font-size:15px}.cloud{flex-wrap:wrap;gap:7px;display:flex}.cloud a{color:var(--ink-2);border:1px solid var(--rule);border-radius:3px;padding:4px 10px;font-size:12.5px;transition:color .18s,border-color .18s,background .18s}.cloud a:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.cloud a .count{color:var(--faint);font-family:var(--serif);margin-left:5px;font-size:11px}.subscribe{gap:9px;display:grid}.subscribe a{color:var(--ink-2);border:1px solid var(--rule);border-radius:var(--radius);overflow-wrap:anywhere;align-items:center;gap:9px;padding:10px 13px;font-size:13.5px;transition:color .18s,border-color .18s,background .18s;display:flex}.subscribe a:hover{border-color:var(--rule-2);background:var(--paper-2);color:var(--ink)}.subscribe svg{width:15px;height:15px;stroke:var(--accent);fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 15px}.post{padding:56px 0 0}.post .wrap{max-width:1000px}.post__kicker{letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:18px;font-size:11.5px;font-weight:600}.post__kicker span{color:var(--faint);font-weight:400}.post__title{font-family:var(--serif);letter-spacing:-.025em;text-wrap:balance;max-width:20em;margin:0 0 24px;font-size:clamp(28px,4vw,44px);font-weight:600;line-height:1.25}.post__meta{color:var(--sub);border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:center;gap:15px;padding-bottom:22px;font-size:12.5px;display:flex}.post__meta .tags{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.post__lede{color:var(--ink-2);max-width:var(--measure);margin:30px 0 0;font-size:17.5px;line-height:1.8}.post__body{grid-template-columns:minmax(0,1fr) 216px;align-items:start;gap:56px;padding:44px 0 0;display:grid}.rail{top:calc(var(--nav-h) + 30px);position:sticky}.rail__h{letter-spacing:.19em;text-transform:uppercase;color:var(--sub);margin-bottom:13px;font-size:10.5px;font-weight:600}.rail ol{border-left:1px solid var(--rule);margin:0;padding:0;list-style:none}.rail li{margin:0}.rail a{color:var(--sub);border-left:2px solid #0000;margin-left:-1px;padding:5px 0 5px 14px;font-size:13px;line-height:1.5;transition:color .18s,border-color .18s;display:block}.rail a:hover{color:var(--ink)}.rail a[aria-current=true]{color:var(--accent-ink);border-left-color:var(--accent);font-weight:600}.rail .lvl3 a{padding-left:27px;font-size:12.5px}.toc-inline{background:var(--paper-2);border-left:2px solid var(--rule-2);border-radius:0 var(--radius) var(--radius) 0;margin:2.2em 0 0;padding:20px 22px}.toc-inline__h{letter-spacing:.17em;text-transform:uppercase;color:var(--sub);margin-bottom:11px;font-size:11px;font-weight:600}.toc-inline summary{cursor:pointer;letter-spacing:.17em;text-transform:uppercase;color:var(--sub);align-items:center;gap:8px;font-size:11px;font-weight:600;list-style:none;display:flex}.toc-inline summary::-webkit-details-marker{display:none}.toc-inline summary:before{content:"▸";font-size:10px;transition:transform .15s}.toc-inline[open] summary:before{transform:rotate(90deg)}.toc-inline ol{margin:0;padding:0;font-size:14px;list-style:none}.toc-inline li{margin:5px 0}.toc-inline li:first-child{margin-top:11px}.toc-inline .lvl3{padding-left:17px;font-size:13.5px}.toc-inline a{color:var(--ink-2);transition:color .16s}.toc-inline a:hover{color:var(--accent)}.prose{color:var(--ink-2);max-width:var(--measure);font-size:16.5px;line-height:1.85}.prose>:first-child{margin-top:0}.prose>*+*{margin-top:1.15em}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--ink);text-wrap:balance;scroll-margin-top:calc(var(--nav-h) + 24px)}.prose h1{font-family:var(--serif);letter-spacing:-.02em;margin:2.4em 0 0;font-size:26px;font-weight:600;line-height:1.35}.prose h2{font-family:var(--serif);letter-spacing:-.02em;border-top:1px solid var(--rule);margin:2.4em 0 0;padding-top:1.1em;font-size:26px;font-weight:600;line-height:1.35}.prose>h2:first-child,.prose>h1:first-child{border-top:0;padding-top:0}.prose h3{font-family:var(--serif);letter-spacing:-.01em;margin:2em 0 0;font-size:20px;font-weight:600}.prose h4{margin:1.7em 0 0;font-size:15.5px;font-weight:650}.prose h5,.prose h6{color:var(--sub);margin:1.6em 0 0;font-size:15px;font-weight:600}.prose p{margin:1.15em 0 0}.prose a{color:var(--accent-ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent);padding-bottom:1px;transition:border-color .18s,background .18s}.prose a:hover{border-bottom-color:var(--accent);background:var(--accent-soft)}.prose strong{color:var(--ink);font-weight:650}.prose em{font-style:italic}.prose ul,.prose ol{margin:1.1em 0 0;padding-left:1.5em}.prose li{margin:.42em 0}.prose li::marker{color:var(--accent);font-family:var(--serif)}.prose li>ul,.prose li>ol{margin:.4em 0 0}.prose hr{border-top:1px solid var(--rule-2);width:56px;height:0;margin:2.6em auto;position:relative}.prose hr:after{content:"✳";background:var(--paper);color:var(--faint);padding:0 8px;font-size:11px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.prose blockquote{border-left:2px solid var(--accent);font-family:var(--serif);color:var(--ink);letter-spacing:-.005em;margin:1.6em 0 0;padding:2px 0 2px 22px;font-size:17.5px;line-height:1.7}.prose blockquote p{margin:.5em 0 0}.prose blockquote p:first-child{margin-top:0}.prose blockquote cite{font-family:var(--sans);color:var(--sub);margin-top:.7em;font-size:12.5px;font-style:normal;display:block}.prose code{font-family:var(--mono);background:var(--code-bg);border:1px solid var(--rule);color:var(--accent-ink);word-break:break-word;border-radius:3px;padding:2px 6px;font-size:.86em}.prose pre{background:var(--code-bg);border:1px solid var(--rule);border-left:2px solid var(--accent);border-radius:var(--radius);tab-size:4;margin:1.6em 0 0;padding:18px 20px;font-size:13px;line-height:1.75;position:relative;overflow-x:auto}.prose pre code{color:inherit;font-size:inherit;white-space:pre;word-break:normal;background:0 0;border:0;padding:0}.prose pre:before{content:attr(data-language);font-family:var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--faint);pointer-events:none;font-size:10px;transition:opacity .15s;position:absolute;top:11px;right:14px}.prose pre:hover:before{opacity:0}.prose pre code,.prose pre code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style,inherit);font-weight:var(--shiki-light-font-weight,inherit);text-decoration:var(--shiki-light-text-decoration,inherit)}[data-theme=dark] .prose pre code,[data-theme=dark] .prose pre code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style,inherit);font-weight:var(--shiki-dark-font-weight,inherit);text-decoration:var(--shiki-dark-text-decoration,inherit)}.prose pre::-webkit-scrollbar{height:8px}.prose pre::-webkit-scrollbar-thumb{background:var(--rule-2);border-radius:4px}.code-copy{z-index:2;height:25px;font-size:11.5px;font-family:var(--sans);letter-spacing:.04em;color:var(--sub);background:var(--paper);border:1px solid var(--rule-2);cursor:pointer;opacity:0;border-radius:3px;align-items:center;gap:5px;padding:0 9px;transition:opacity .15s,color .15s,border-color .15s;display:inline-flex;position:absolute;top:8px;right:8px}.prose pre:hover .code-copy,.code-copy:focus-visible{opacity:1}.code-copy:hover{color:var(--accent-ink);border-color:var(--accent)}.code-copy[data-done=true]{color:var(--accent-ink);border-color:var(--accent);opacity:1}@media (hover:none){.code-copy{opacity:1}}.prose table{border-collapse:collapse;width:100%;margin:1.7em 0 0;font-size:14px;display:block;overflow-x:auto}.prose th{text-align:left;letter-spacing:.11em;text-transform:uppercase;color:var(--sub);border-bottom:2px solid var(--ink);white-space:nowrap;padding:0 14px 9px 0;font-size:11.5px;font-weight:600}.prose td{border-bottom:1px solid var(--rule);vertical-align:top;padding:11px 14px 11px 0}.prose table code{font-size:.82em}.prose img{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-2);margin:1.8em 0 0;display:block}.prose figure{margin:1.8em 0 0}.prose figcaption{color:var(--sub);text-align:center;margin-top:9px;font-size:12.5px}.prose iframe{border-radius:var(--radius);border:0;max-width:100%}.prose mark{background:var(--bg-mark);color:inherit;border-radius:2px;padding:0 2px}.prose kbd{font-family:var(--mono);border:1px solid var(--rule-2);background:var(--paper-2);border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-size:.82em}.prose a[href^=http]:after{content:"";opacity:.35;background:currentColor;width:.68em;height:.68em;margin-left:3px;display:inline-block;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M14 3h7v7h-2V6.4l-8.3 8.3-1.4-1.4L17.6 5H14V3zM5 5h6v2H7v10h10v-4h2v6H5V5z'/></svg>") 50%/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M14 3h7v7h-2V6.4l-8.3 8.3-1.4-1.4L17.6 5H14V3zM5 5h6v2H7v10h10v-4h2v6H5V5z'/></svg>") 50%/contain no-repeat}.post__foot{border-top:1px solid var(--rule);margin:56px 0 0;padding-top:26px}.license{color:var(--sub);background:var(--paper-2);border-radius:var(--radius);align-items:flex-start;gap:13px;padding:16px 18px;font-size:12.5px;line-height:1.7;display:flex}.license svg{opacity:.85;flex:0 0 30px;width:30px;height:30px}.license a{color:var(--accent-ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 35%, transparent)}.license a:hover{border-bottom-color:var(--accent)}.license b{color:var(--ink);font-weight:600}.postnav{grid-template-columns:1fr 1fr;gap:16px;margin-top:26px;display:grid}.postnav a{border:1px solid var(--rule);border-radius:var(--radius);padding:18px 20px;transition:border-color .2s,background .2s,transform .2s;display:block}.postnav a:hover{border-color:var(--rule-2);background:var(--paper-2);transform:translateY(-1px)}.postnav__lab{letter-spacing:.15em;text-transform:uppercase;color:var(--sub);margin-bottom:7px;font-size:10.5px}.postnav__t{font-family:var(--serif);color:var(--ink);font-size:15.5px;font-weight:600;line-height:1.45}.postnav .next{text-align:right}.postnav__empty{color:var(--faint);border-style:dashed;justify-content:center;align-items:center;min-height:78px;font-size:12.5px;display:flex}.related{margin-top:40px}.related__h{letter-spacing:.19em;text-transform:uppercase;color:var(--sub);border-bottom:1px solid var(--rule-2);margin-bottom:6px;padding-bottom:9px;font-size:11px;font-weight:600}.related ul{margin:0;padding:0;list-style:none}.related li{border-bottom:1px solid var(--rule)}.related a{align-items:baseline;gap:14px;padding:12px 0;transition:color .18s;display:flex}.related a:hover{color:var(--accent)}.related .t{font-family:var(--serif);flex:1;font-size:15px;font-weight:500}.related .d{font-family:var(--serif);color:var(--faint);flex:none;font-size:12.5px}.page-head{border-bottom:2px solid var(--ink);padding:60px 0 40px}.page-head__kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:16px;font-size:11.5px;font-weight:600}.page-head h1{font-family:var(--serif);letter-spacing:-.025em;text-wrap:balance;margin:0 0 14px;font-size:clamp(28px,4vw,42px);font-weight:600;line-height:1.2}.page-head p{color:var(--ink-2);max-width:36rem;margin:0;font-size:15.5px}.page-head p a{color:var(--accent-ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent)}.page-head p a:hover{border-bottom-color:var(--accent)}.page-body{padding:36px 0 0}.year{padding:48px 0 0}.year__h{border-bottom:1px solid var(--rule-2);align-items:baseline;gap:16px;margin-bottom:6px;padding-bottom:12px;display:flex}.year__h b{font-family:var(--serif);letter-spacing:-.03em;font-size:40px;font-weight:600;line-height:1}.year__h span{color:var(--sub);white-space:nowrap;font-size:12.5px}.year__h .rule{background:var(--rule);flex:1;height:1px}.row{border-bottom:1px solid var(--rule);grid-template-columns:96px minmax(0,1fr) auto;align-items:baseline;gap:22px;padding:13px 0;transition:background .18s;display:grid}.row:hover{background:var(--paper-2)}.row__d{font-family:var(--serif);color:var(--sub);letter-spacing:.03em;font-size:13px}.row__t{font-family:var(--serif);color:var(--ink);text-wrap:balance;margin:0;font-size:16.5px;font-weight:500;line-height:1.5;transition:color .18s}.row:hover .row__t{color:var(--accent)}.row__c{color:var(--sub);text-align:right;white-space:nowrap;font-size:12px}.cats{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:30px 44px;margin-top:26px;display:grid}.cats .tree>li{margin-bottom:0}.cats .tree>li>a{font-size:16.5px}.tag-group{margin-top:40px}.tag-group h2{font-family:var(--serif);border-bottom:1px solid var(--rule-2);margin:0 0 16px;padding-bottom:10px;font-size:18px;font-weight:600}.tag-group .cloud{gap:9px}.tag-group .cloud a{padding:5px 12px;font-size:13.5px}.tag-cloud-lg{gap:9px;margin-top:22px}.tag-cloud-lg a{padding:5px 12px;font-size:13.5px}.back-link{margin:40px 0 0;font-size:13.5px}.back-link a{color:var(--sub)}.back-link a:hover{color:var(--accent)}.about-strip{background:var(--paper-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:60px 0}.about-strip__in{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start;gap:64px;display:grid}.about-strip__kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:18px;font-size:11.5px;font-weight:600}.about-strip__txt h2{font-family:var(--serif);letter-spacing:-.022em;text-wrap:balance;max-width:16em;margin:0 0 20px;font-size:clamp(22px,2.7vw,30px);font-weight:600;line-height:1.4}.about-strip__txt p{color:var(--ink-2);max-width:36rem;margin:0 0 14px;font-size:15px;line-height:1.85}.about-strip__txt p:last-child{margin-bottom:0}.facts{margin:0;padding:0}.facts>div{border-bottom:1px solid var(--rule);grid-template-columns:72px 1fr;gap:14px;padding:13px 0;display:grid}.facts>div:first-child{border-top:1px solid var(--rule)}.facts dt{letter-spacing:.13em;text-transform:uppercase;color:var(--sub);padding-top:3px;font-size:11px}.facts dd{color:var(--ink);margin:0;font-size:14px;line-height:1.65}.facts a{color:var(--accent-ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 35%, transparent)}.facts a:hover{border-bottom-color:var(--accent)}.about-cards{gap:26px;margin-top:44px;display:grid}.about-card{border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--paper);padding:24px 26px}.about-card h2{font-family:var(--serif);border-bottom:1px solid var(--rule-2);margin:0 0 14px;padding-bottom:10px;font-size:17px;font-weight:600}.about-card p{color:var(--ink-2);margin:0 0 10px;font-size:14.5px;line-height:1.8}.about-card p:last-child{margin-bottom:0}.about-card a{color:var(--accent-ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 35%, transparent)}.about-card a:hover{border-bottom-color:var(--accent)}.qr-row{flex-wrap:wrap;gap:26px;margin-top:16px;display:flex}.qr-row figure{text-align:center;margin:0}.qr-row img{aspect-ratio:1;object-fit:contain;border:1px solid var(--rule);border-radius:var(--radius);background:#fff;width:296px;max-width:100%;height:auto;padding:12px}.qr-row figcaption{color:var(--sub);margin-top:8px;font-size:12.5px}.site-foot{border-top:1px solid var(--rule);margin-top:20px;padding:38px 0 46px}.site-foot__inner{max-width:var(--maxw);padding:0 var(--pad);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px;margin:0 auto;display:flex}.site-foot__brand{font-family:var(--serif);align-items:center;gap:10px;margin-bottom:10px;font-size:17px;font-weight:600;display:flex}.site-foot p{color:var(--sub);max-width:40ch;margin:0;font-size:12.5px;line-height:1.75}.site-foot__links{flex-wrap:wrap;gap:22px;font-size:12.5px;display:flex}.site-foot__links a{color:var(--sub);transition:color .18s}.site-foot__links a:hover{color:var(--accent)}.site-foot__legal{max-width:var(--maxw);padding:20px var(--pad) 0;border-top:1px solid var(--rule);color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:20px;margin:26px auto 0;font-size:11.5px;display:flex}.site-foot__legal a{color:var(--faint)}.site-foot__legal a:hover{color:var(--accent)}.dialog{z-index:80;width:auto;max-width:none;max-height:none;color:var(--ink);background:0 0;border:0;margin:0;padding:14vh 20px 20px;display:none;position:fixed;inset:0;overflow:hidden}.dialog[open]{display:block}.dialog::backdrop{background:color-mix(in srgb, var(--ink) 42%, transparent);backdrop-filter:blur(3px)}.dialog__box{background:var(--paper);border:1px solid var(--rule-2);border-radius:var(--radius-lg);max-width:600px;box-shadow:var(--shadow);margin:0 auto;overflow:hidden}.dialog__head{border-bottom:1px solid var(--rule);align-items:center;gap:12px;padding:15px 18px;display:flex}.dialog__head svg{width:17px;height:17px;stroke:var(--sub);fill:none;stroke-width:1.8px;stroke-linecap:round;flex:0 0 17px}.dialog__head input{font:inherit;color:var(--ink);background:0 0;border:0;outline:none;flex:1;font-size:15.5px}.dialog__head input::placeholder{color:var(--faint)}.dialog__head kbd{font-family:var(--sans);color:var(--sub);border:1px solid var(--rule-2);border-radius:3px;flex:none;padding:2px 7px;font-size:10.5px}.dialog__list{max-height:52vh;margin:0;padding:8px;list-style:none;overflow-y:auto}.dialog__list li a{border-radius:var(--radius);color:var(--ink);padding:11px 14px;transition:background .15s;display:block}.dialog__list li a:hover,.dialog__list li a[data-active=true]{background:var(--paper-2)}.dialog__list .r-title{font-family:var(--serif);color:var(--ink);font-size:15px;font-weight:600;line-height:1.5}.dialog__list .r-meta{color:var(--sub);margin-top:3px;font-size:12px}.dialog__list .r-summary{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}.dialog__list mark{background:var(--bg-mark);color:inherit;border-radius:2px;padding:0 1px}.search-empty{text-align:center;color:var(--sub);padding:34px;font-size:13.5px;list-style:none}.search-page-input{width:100%;font-size:16px;font-family:var(--sans);color:var(--ink);background:var(--paper-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a9a296' stroke-width='1.8' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='M20 20l-4.3-4.3'/></svg>") no-repeat 15px center / 17px 17px;border:1px solid var(--rule-2);border-radius:var(--radius);outline:none;padding:14px 18px 14px 44px;transition:border-color .18s,box-shadow .18s}.search-page-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-page-input::placeholder{color:var(--faint)}.search-results{margin:0;padding:0;list-style:none}.search-results li a{border-bottom:1px solid var(--rule);color:var(--ink);padding:16px 14px;transition:background .18s;display:block}.search-results li a:hover,.search-results li a[data-active=true]{background:var(--paper-2)}.search-results .r-title{font-family:var(--serif);font-size:17px;font-weight:600;line-height:1.45}.search-results .r-meta{color:var(--sub);font-variant-numeric:tabular-nums;margin-top:4px;font-size:12px}.search-results .r-summary{color:var(--ink-2);margin-top:6px;font-size:14px;line-height:1.7}.search-results mark{background:var(--bg-mark);color:inherit;border-radius:2px;padding:0 1px}.to-top{z-index:40;background:var(--paper);border:1px solid var(--rule-2);width:42px;height:42px;color:var(--sub);box-shadow:var(--shadow);opacity:0;visibility:hidden;border-radius:50%;place-items:center;transition:opacity .24s,transform .24s,visibility .24s,color .18s,border-color .18s;display:grid;position:fixed;bottom:24px;right:24px;transform:translateY(8px)}.to-top[data-show=true]{opacity:1;visibility:visible;transform:none}.to-top:hover{color:var(--accent);border-color:var(--accent)}.to-top svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.empty{color:var(--sub);padding:40px 0;font-size:14.5px}.not-found{text-align:center;padding:96px 0 40px}.not-found__code{font-family:var(--serif);color:var(--faint);font-variant-numeric:tabular-nums;margin:0 0 18px;font-size:64px;font-weight:600;line-height:1}.not-found p{color:var(--ink-2);margin:0 0 26px;font-size:16px}.not-found__links{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.not-found__links a{border:1px solid var(--rule-2);border-radius:var(--radius);color:var(--sub);padding:9px 18px;font-size:14px;transition:color .18s,border-color .18s,background .18s}.not-found__links a:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}@media (width<=1080px){.layout{grid-template-columns:1fr;gap:52px}.side{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));position:static}.post__body{grid-template-columns:1fr;gap:0}.rail{display:none}.about-strip__in{grid-template-columns:1fr;gap:34px}}@media (width>=1081px){.toc-inline{display:none}}@media (width<=860px){.nav-toggle{display:grid}.nav{inset:calc(var(--nav-h) + 3px) 0 auto 0;background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:var(--shadow);opacity:0;pointer-events:none;flex-direction:column;align-items:stretch;gap:2px;margin:0;padding:10px 16px 16px;transition:opacity .16s,transform .16s;position:fixed;transform:translateY(-8px)}.nav[data-open=true]{opacity:1;pointer-events:auto;transform:none}.nav__link{padding:11px 12px;font-size:14px}.nav__divider{width:auto;height:1px;margin:6px 0}.nav{margin-left:0}.tools{margin-left:auto}}@media (width<=760px){:root{--pad:18px}.hero{padding:46px 0 38px}.hero__stats{gap:28px}.hero__stats b{font-size:25px}.ai-entry{grid-template-columns:auto minmax(0,1fr);gap:14px 16px;padding:18px 20px}.ai-entry__mark{width:36px;height:36px;font-size:13px}.ai-entry__title{font-size:17px}.ai-entry__go{grid-column:2;justify-content:flex-start}.item{grid-template-columns:1fr;gap:10px;padding:22px 0}.item__date{flex-direction:row;align-items:baseline;gap:8px;padding-top:0}.item__day{font-size:15px;font-family:var(--sans);font-weight:600}.item__ym{margin-top:0}.item__title{font-size:19px}.row{grid-template-columns:1fr;gap:4px;padding:14px 0}.row__c{text-align:left}.postnav{grid-template-columns:1fr}.postnav .next{text-align:left}.post__meta .tags{width:100%;margin-left:0}.prose{font-size:16px}.prose pre{margin-left:calc(var(--pad) * -1);margin-right:calc(var(--pad) * -1);border-left-width:3px;border-radius:0}.to-top{bottom:14px;right:14px}.brand__sup{display:none}}@media (width<=420px){.hero__stats{gap:20px}.dialog{padding:8vh 12px 12px}}@media (width<=400px){.brand__name{display:none}}.ai-strip{padding:34px 0 0}.ai-entry{border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--paper-2);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:22px;padding:20px 24px;transition:border-color .2s,background .2s,transform .2s;display:grid}.ai-entry:hover{border-color:var(--rule-2);background:var(--paper-3);transform:translateY(-1px)}.ai-entry__mark{background:var(--accent);width:42px;height:42px;color:var(--paper);font-family:var(--serif);border-radius:4px;place-items:center;font-size:15px;font-weight:700;line-height:1;display:grid}.ai-entry__txt{gap:3px;min-width:0;display:grid}.ai-entry__kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-size:10.5px;font-weight:600}.ai-entry__title{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);font-size:18.5px;font-weight:600;line-height:1.45}.ai-entry__note{color:var(--sub);font-size:12px}.ai-entry__go{color:var(--accent-ink);white-space:nowrap;align-items:center;gap:7px;font-size:13px;display:inline-flex}.ai-entry__arrow{transition:transform .2s}.ai-entry:hover .ai-entry__arrow{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.ai-entry,.ai-entry__arrow{transition:none}.ai-entry:hover,.ai-entry:hover .ai-entry__arrow{transform:none}}.ai-latest{padding:40px 0 0}.ai-latest__card{border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:var(--paper-2);padding:26px 28px;transition:border-color .2s,background .2s,transform .2s;display:block}.ai-latest__card:hover{border-color:var(--rule-2);background:var(--paper-3);transform:translateY(-1px)}.ai-latest__lab{letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;font-size:10.5px;font-weight:600}.ai-latest__t{font-family:var(--serif);letter-spacing:-.02em;text-wrap:balance;margin:0 0 10px;font-size:clamp(20px,2.4vw,26px);font-weight:600;line-height:1.35}.ai-latest__s{color:var(--ink-2);max-width:44rem;margin:0 0 16px;font-size:14.5px;line-height:1.75}.ai-latest__go{color:var(--accent-ink);align-items:center;gap:7px;font-size:13px;display:inline-flex}.ai-latest__go span{transition:transform .2s}.ai-latest__card:hover .ai-latest__go span{transform:translate(3px)}.row__c .row__tags{vertical-align:middle;gap:5px;margin-left:10px;display:inline-flex}.row__c .row__tags .tag{padding:1px 6px;font-size:10.5px}.back-link{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.ai-hint{color:var(--faint);font-size:12px}@media print{.masthead,.side,.rail,.to-top,.dialog,.pager,.toc-inline{display:none!important}body{background:#fff;font-size:11pt}.layout,.post__body,.about-strip__in{grid-template-columns:1fr;gap:0}.prose a{color:inherit;border-bottom:0}.prose a[href^=http]:after{display:none}}
