:root{--paper:#ebe7d9;--paper-hi:#f5f2e9;--ink:#1b1a17;--ink-2:#4a4740;--ink-3:#8a857a;--line:#d6cfbd;--grid:#1b1a170b;--durian:#e8833a;--durian-hl:#e8833a61;--hl:linear-gradient(transparent 58%, var(--durian-hl) 58%, var(--durian-hl) 92%, transparent 92%);--navy:#2b3350;--blue:#5c7fa8;--f-display:"Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--f-body:"Noto Serif SC", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", "STSong", serif;--f-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--f-ui:-apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--r-card:28px;--gutter:clamp(16px, 4vw, 48px);--col:min(1080px, 100% - var(--gutter) * 2);--ease-click:linear(0, .33 9%, .77 22%, 1.02 36%, 1.06 44%, 1.01 60%, .995 75%, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-synthesis-weight:none}body{background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);color:var(--ink);font-family:var(--f-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-size:32px 32px;margin:0;font-size:17px;line-height:1.75}img,video{max-width:100%;height:auto;display:block}a{color:inherit}::selection{background:var(--durian-hl)}:focus-visible{outline:2px solid var(--durian);outline-offset:3px;border-radius:6px}.wrap{width:var(--col);margin-inline:auto}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.label{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:12px}.hl{background:var(--hl);-webkit-box-decoration-break:clone;box-decoration-break:clone}.stamp{border:1.5px solid var(--durian);color:var(--durian);font-family:var(--f-display);letter-spacing:.08em;white-space:nowrap;border-radius:6px;align-items:center;gap:4px;padding:1px 9px 2px;font-size:13px;font-weight:700;display:inline-flex;transform:rotate(-3deg)}.topbar{z-index:20;width:var(--col);font-family:var(--f-mono);letter-spacing:.12em;justify-content:space-between;align-items:center;margin-inline:auto;padding-top:26px;font-size:13px;display:flex;position:absolute;inset:0 0 auto}.topbar a{text-decoration:none}.brand{text-transform:uppercase;align-items:center;gap:10px;display:inline-flex}.brand-dot{border:1.5px solid var(--durian);background:radial-gradient(circle, var(--durian) 0 35%, transparent 40%);border-radius:50%;width:9px;height:9px}.topbar nav{gap:clamp(14px,2.6vw,28px);display:flex}.topbar nav a{--pad-x:0px;isolation:isolate;padding:4px var(--pad-x);position:relative}.topbar nav a:after{content:"";left:calc(var(--pad-x) - 3px);right:calc(var(--pad-x) - 3px);z-index:-1;background:var(--durian-hl);transform-origin:0;height:.5em;transition:transform .26s var(--ease-click);border-radius:2px;position:absolute;top:52%;transform:scaleX(0)}.topbar nav a:hover:after,.topbar nav a[aria-current=page]:after{transform:scaleX(1)}.footer{padding:180px 0 40px;position:relative;overflow:hidden}.footer-mark{user-select:none;position:relative}.footer-mark svg{width:100%;height:auto;display:block;overflow:visible}.footer-mark text{font-family:var(--f-display);fill:var(--paper);stroke:#1b1a1757;stroke-width:2.8px;vector-effect:non-scaling-stroke;paint-order:stroke fill;font-size:200px;font-weight:900}.footer-row{justify-content:space-between;align-items:flex-end;gap:24px;margin-top:24px;display:flex}.footer-note{margin:0}@media (width<=480px){.footer-note .sep{display:none}.footer-note .nowrap{display:block}}.footer-rss{text-decoration-color:var(--durian);text-underline-offset:4px;flex:none}.footer-cat{width:clamp(96px,15%,170px);height:auto;position:absolute;bottom:88%;right:-1%}.prose{color:var(--ink);text-wrap:pretty;font-size:18px;line-height:1.9}.prose p{margin:0 0 1.15em}.prose h2,.prose h3{font-family:var(--f-display);margin:2em 0 .6em;font-weight:800;line-height:1.3}.prose h2{font-size:26px}.prose h3{font-size:21px}.prose ul,.prose ol{margin:0 0 1.15em;padding-left:1.3em}.prose li{margin:.35em 0}.prose li::marker{color:var(--durian)}.prose a{text-decoration-color:var(--durian);text-underline-offset:4px}.prose blockquote{border-left:3px solid var(--durian);color:var(--ink-2);margin:1.6em 0;padding:4px 0 4px 20px}.prose hr{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 18'%3E%3Cpath d='M2 9c10-8 18 8 28 0s18 8 28 0 18 8 28 0 18 8 28 0' fill='none' stroke='%23e8833a' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/120px 18px no-repeat;border:0;height:18px;margin:2.4em 0}.prose strong{font-weight:400}.prose strong .hl-t,em.hl-run .hl-t,.prose strong.hl-all{background:var(--hl);-webkit-box-decoration-break:clone;box-decoration-break:clone}.prose figure{margin:1.8em 0}.prose figure img{border-radius:6px;width:100%;height:auto}.prose figcaption{text-align:center;font:400 13px/1.6 var(--f-ui);color:var(--ink-3);margin-top:.6em}.prose pre{max-width:100%;font:400 14px/1.7 var(--f-mono);color:var(--ink);background:#1b1a170d;border-radius:6px;margin:1.4em 0;padding:14px 16px;overflow-x:auto}.prose code{font-family:var(--f-mono);font-size:.86em}.prose :not(pre)>code{background:#1b1a170f;border-radius:4px;padding:.1em .35em}.prose table{border-collapse:collapse;max-width:100%;margin:1.4em 0;font-size:15px;line-height:1.6;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px dashed var(--line);padding:8px 14px 8px 0}.prose th{font-family:var(--f-display);border-bottom:1.5px solid var(--ink);font-weight:700}.prose img.ai{mix-blend-mode:multiply}em.hl-run{font-style:normal}@media (width<=640px){body{font-size:16px}.prose{font-size:17px}.topbar{padding-top:18px;font-size:12px}.topbar nav{gap:2px}.topbar nav a{--pad-x:7px;padding:12px var(--pad-x)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pq,.pq-c{margin-right:-.5em}.pq-o{margin-left:-.5em}.nowrap{white-space:nowrap}em.hl{font-style:normal}
