@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-cyrillic-ext-opsz-normal.DIwfbPUE.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-cyrillic-opsz-normal.C0olyEE-.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-greek-opsz-normal.DrHU7SY7.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-vietnamese-opsz-normal.BOyYyU_V.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-latin-ext-opsz-normal.HoL-AExg.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-latin-opsz-normal.BpEBLj1O.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-cyrillic-ext-opsz-italic.Bl6DJqma.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-cyrillic-opsz-italic.Dibx14aP.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-greek-opsz-italic.CMW9dfKg.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-vietnamese-opsz-italic.C-k5pZlm.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-latin-ext-opsz-italic.BhUEwDRF.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_assets/source-serif-4-latin-opsz-italic.BOLXpvkj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Ropes Serif;src:url(/_fonts/serif-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Ropes Serif;src:url(/_fonts/serif-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@property --bg{syntax:"<color>";inherits:true;initial-value:#fffcf0}@property --bg-elev{syntax:"<color>";inherits:true;initial-value:#f2f0e5}@property --rule{syntax:"<color>";inherits:true;initial-value:#e6e4d9}@property --mark{syntax:"<color>";inherits:true;initial-value:#f6e2a0}@property --ink{syntax:"<color>";inherits:true;initial-value:#1c1b1a}@property --ink-2{syntax:"<color>";inherits:true;initial-value:#575653}@property --ink-3{syntax:"<color>";inherits:true;initial-value:#6f6e69}@property --accent{syntax:"<color>";inherits:true;initial-value:#205ea6}@property --rope{syntax:"<color>";inherits:true;initial-value:#bc5215}:root{--bg:#fffcf0;--bg-elev:#f2f0e5;--bg-sunk:#f2f0e5;--ink:#1c1b1a;--ink-2:#575653;--ink-3:#6f6e69;--rule:#e6e4d9;--accent:#205ea6;--accent-soft:#205ea659;--rope:#bc5215;--rope-soft:#bc521573;--mark:#f6e2a0;--shadow:0 1px 2px #100f0f0f, 0 8px 24px #100f0f1a;--serif:"Ropes Serif", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif;--serif-en:"Source Serif 4 Variable", "Ropes Serif", Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--mono:"Cascadia Code", "SF Mono", ui-monospace, Consolas, "Microsoft YaHei", monospace;--measure:41rem;--gutter:16px;--ease:cubic-bezier(.2, 0, 0, 1);color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#100f0f;--bg-elev:#1c1b1a;--bg-sunk:#1c1b1a;--ink:#cecdc3;--ink-2:#b7b5ac;--ink-3:#878580;--rule:#282726;--accent:#66a0c8;--accent-soft:#66a0c861;--rope:#da702c;--rope-soft:#da702c80;--mark:#3a2d04;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000080;color-scheme:dark}}:root[data-theme=dark]{--bg:#100f0f;--bg-elev:#1c1b1a;--bg-sunk:#1c1b1a;--ink:#cecdc3;--ink-2:#b7b5ac;--ink-3:#878580;--rule:#282726;--accent:#66a0c8;--accent-soft:#66a0c861;--rope:#da702c;--rope-soft:#da702c80;--mark:#3a2d04;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000080;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1.5rem}body{background:var(--bg);color:var(--ink);font-family:var(--serif);font-kerning:normal;text-autospace:normal;text-spacing-trim:normal;line-break:strict;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;margin:0;font-size:17px;line-height:1.8;display:flex;overflow-x:hidden}@media (width>=720px){body{font-size:18px}}::selection{background:var(--mark)}a{color:var(--accent);text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:var(--accent-soft);text-underline-offset:.22em;transition:text-decoration-color .15s var(--ease), color .15s var(--ease)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}img,svg{max-width:100%}.muted{color:var(--ink-3)}.dot{color:var(--ink-3);margin:0 .45em}.skip{position:absolute;left:-999px}.skip:focus{left:var(--gutter);z-index:10;background:var(--bg-elev);padding:4px 10px;top:8px}.bar{width:min(100% - 2 * var(--gutter), var(--measure));align-items:center;gap:1rem;margin:0 auto;display:flex}.site-header{font-family:var(--sans);font-size:.82rem}.site-header .bar{justify-content:space-between;padding:1.4rem 0 0}.brand{color:var(--ink);font-family:var(--serif-en);letter-spacing:.005em;white-space:nowrap;align-items:center;gap:.5rem;font-size:1.05rem;font-style:italic;text-decoration:none;display:inline-flex}.brand-mark{width:22px;height:22px;color:var(--rope)}.site-header nav{align-items:center;gap:.15rem;display:flex}.site-header nav a{color:var(--ink-2);letter-spacing:.08em;border-radius:6px;padding:.3rem .55rem;text-decoration:none}.site-header nav a:hover{color:var(--ink);background:var(--bg-sunk)}.site-header nav a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -1.5px 0 var(--rope);border-radius:0}.theme-toggle,.icon-link{appearance:none;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;width:34px;height:34px;display:grid;padding:0!important}.theme-toggle:hover,.icon-link:hover{background:var(--bg-sunk);color:var(--ink)}.icon-link svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.icon-link circle{fill:currentColor;stroke:none}.theme-toggle{width:44px;height:44px;transition:background-color .16s ease, transform .12s var(--ease);-webkit-tap-highlight-color:transparent;border-radius:8px;margin:-5px -6px -5px .1rem}.theme-toggle:active{transform:scale(.94)}.cam{shape-rendering:crispedges;width:22px;height:23.5px;overflow:visible}.cam .photo{transition:transform .4s steps(5,end)}.cam .photo.hidden{transition:none;transform:translateY(-5px)}.cam .photo.drop{opacity:0;transition:transform .16s steps(2,end),opacity .16s steps(2,end);transform:translateY(3px)}.cam .flash{fill:#e6e4d9;transition:fill .26s ease-out}.cam.firing .flash{fill:#fff6c8;transition:none}.cam .px-sky,.cam .px-star{fill:#bfd6e6}.cam .px-orb{fill:#d0a215}.cam .px-sea{fill:#4385be}.cam .px-glint{fill:#fffcf0}.cam .night .px-sky,:root[data-theme=dark] .cam .auto .px-sky{fill:#1a2230}.cam .night .px-orb,:root[data-theme=dark] .cam .auto .px-orb{fill:#e6e4d9}.cam .night .px-sea,:root[data-theme=dark] .cam .auto .px-sea{fill:#24476e}.cam .night .px-glint,:root[data-theme=dark] .cam .auto .px-glint{fill:#cecdc3}.cam .night .px-star,:root[data-theme=dark] .cam .auto .px-star{fill:#d0a215}.cam .img rect{transition:fill var(--develop-T,0s) cubic-bezier(.45, .05, .55, .95)}.cam .raw rect{transition:none;fill:#2e3438!important}@media (prefers-reduced-motion:reduce){.cam .photo,.theme-toggle{transition-duration:0s!important}}@media (forced-colors:active){.theme-toggle{border:1px solid buttontext}}.follow-system{font:inherit;color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-color:var(--accent-soft);text-underline-offset:.2em;background:0 0;border:0;padding:0}.follow-wrap[hidden]{display:none}@media (width<=520px){.brand span{display:none}.site-header nav a:not(.icon-link){letter-spacing:.04em;padding:.3rem .4rem}}.main{width:min(100% - 2 * var(--gutter), var(--measure));flex:1;margin:0 auto;padding:4.5rem 0 3rem}.main.wide{width:min(100% - 2 * var(--gutter), 60rem)}@media (width<=720px){.main{padding-top:3rem}}.site-footer{font-family:var(--sans);color:var(--ink-3);border-top:1px solid var(--rule);margin-top:3rem;font-size:.78rem}.site-footer .bar{flex-wrap:wrap;gap:0;padding:1.6rem 0 2.4rem}.site-footer a{color:var(--ink-2);text-decoration:none}.site-footer a:hover{color:var(--ink)}.site-footer .sep{margin:0 .6em}.hero{margin-bottom:4.5rem}.hero-title{font-family:var(--serif-en);letter-spacing:-.015em;font-variation-settings:"opsz" 60;margin:0 0 1.4rem;font-size:clamp(2.4rem,7vw,3.4rem);font-style:italic;font-weight:400;line-height:1.05}.hero-epigraph{font-family:var(--serif-en);color:var(--ink-2);border-left:2px solid var(--rope);max-width:32rem;margin:0 0 1.4rem;padding-left:1rem;font-size:1.05rem;font-style:italic;line-height:1.6}.hero-lede{margin:0 0 .8rem;font-size:1.05rem}.hero-links{font-family:var(--sans);margin:0;font-size:.85rem}.hero-links a{text-decoration:none}.year{border-top:1px solid var(--rule);grid-template-columns:4.5rem 1fr;gap:0 1.5rem;margin-bottom:1.4rem;padding-top:1.4rem;display:grid}.year-label{font-family:var(--serif-en);color:var(--ink-3);font-variant-numeric:oldstyle-nums;letter-spacing:.04em;margin:.15rem 0 0;font-size:1rem;font-weight:400}.year ol{margin:0;padding:0;list-style:none}.post-item{justify-content:space-between;align-items:baseline;gap:1.25rem;padding:.15rem 0 1.5rem;display:flex}.post-link{color:var(--ink);min-width:0;text-decoration:none;display:block}.post-title{transition:color .15s var(--ease);font-size:1.12rem;font-weight:700;line-height:1.5;display:block}.post-link:hover .post-title{color:var(--accent)}.post-desc{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.3rem;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.post-meta{font-family:var(--sans);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:.75rem}@media (width<=600px){.year{grid-template-columns:1fr}.year-label{margin-bottom:.8rem}.post-item{flex-direction:column;gap:.35rem}.post-meta{order:-1}}.log{--track:3.25rem;--line:var(--rope)}.log-head{border-top:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem;padding-top:1.4rem;display:flex}.log-name{letter-spacing:.14em;color:var(--ink-2);margin:0;font-size:.95rem;font-weight:400}.log-sum{font-family:var(--sans);color:var(--ink-3);font-variant-numeric:tabular-nums;margin:0;font-size:.75rem}.log-sum .dot{margin:0 .35em}.log-list{margin:0;padding:0;list-style:none}.log-entry{grid-template-columns:var(--track) minmax(0, 1fr);padding-bottom:2.6rem;display:grid;position:relative}.log-entry:before{content:"";left:calc(var(--track) / 2 - .75px);background:repeating-linear-gradient(to bottom, var(--line) 0 5px, transparent 5px 10px);opacity:.7;width:1.5px;position:absolute;top:.9rem;bottom:-.9rem}.log-entry.is-latest:before{top:3.1rem}.log-entry.is-origin{padding-bottom:0}.log-entry.is-origin:before{display:none}.log-mark{z-index:1;justify-content:center;align-items:flex-start;padding-top:.55rem;display:flex;position:relative}.log-dot{border:2px solid var(--rope);background:var(--bg);width:11px;height:11px;transition:background-color .18s var(--ease), transform .18s var(--ease);border-radius:50%}.log-entry:hover .log-dot,.log-entry:focus-within .log-dot{background:var(--rope);transform:scale(1.2)}.log-mark svg{overflow:visible}.is-latest .log-mark{padding-top:.6rem}.is-latest .log-mark svg{transform-origin:50% 80%;width:2.3rem;height:auto;animation:4.5s ease-in-out infinite log-bob}.log-mark .hull{fill:var(--rope)}.log-mark .sail{fill:var(--bg);stroke:var(--ink-2);stroke-width:2px;stroke-linejoin:round}.log-mark .line{fill:none;stroke:var(--rope);stroke-width:2px;stroke-linecap:round}.is-origin .log-mark{padding-top:.35rem}.is-origin .log-mark svg{width:1.2rem;height:auto}@keyframes log-bob{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-2px)rotate(2deg)}}.log-leg{z-index:1;width:var(--track);text-align:center;font-family:var(--sans);color:var(--rope);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.68rem;line-height:1.3;position:absolute;bottom:.75rem;left:0}.log-leg:before{content:"";z-index:-1;background:var(--bg);position:absolute;inset:-.1rem .35rem}.log-link,.log-card{min-width:0;color:var(--ink);text-decoration:none;display:block}.log-kicker{font-family:var(--sans);color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:.75rem;line-height:1.6;display:block}.log-title{transition:color .15s var(--ease);margin-top:.15rem;font-size:1.12rem;font-weight:700;line-height:1.5;display:block}.log-link:hover .log-title{color:var(--accent)}.log-desc{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.3rem;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.log-card{background:var(--bg-elev);border:1px solid var(--rule);transition:box-shadow .2s var(--ease), transform .2s var(--ease);border-radius:6px;padding:1.05rem 1.3rem 1.15rem}.log-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.log-now{background:var(--rope);color:var(--bg);letter-spacing:.06em;border-radius:999px;margin-right:.6rem;padding:0 .5rem;font-weight:600;display:inline-block}.log-card .log-title{margin-top:.4rem;font-size:1.5rem;line-height:1.4}.log-card .log-desc{margin-top:.45rem;font-size:.98rem;display:block}.log-cta{font-family:var(--sans);color:var(--accent);margin-top:.75rem;font-size:.85rem;display:inline-block}.log-cta span{transition:transform .2s var(--ease);margin-left:.25em;display:inline-block}.log-card:hover .log-cta span{transform:translate(3px)}.log-origin{margin:0}.log-origin-text{color:var(--ink-2);margin-top:.2rem;font-size:.92rem;line-height:1.7;display:block}@media (width<=600px){.log{--track:2.4rem}.log-head{flex-direction:column;gap:.2rem}.log-card{padding:.9rem 1rem 1rem}.log-card .log-title{font-size:1.3rem}.is-latest .log-mark svg{width:1.9rem}.log-entry.is-latest:before{top:2.7rem}}@media (prefers-reduced-motion:reduce){.is-latest .log-mark svg{animation:none}.log-card,.log-card:hover{transform:none}}.page-header{margin-bottom:2.5rem}.page-header h1{margin:0 0 .5rem;font-size:2rem;line-height:1.3}.page-lede,.crumb{color:var(--ink-2);font-family:var(--sans);margin:0;font-size:.85rem}.crumb a{color:var(--ink-3);text-decoration:none}.article{position:relative}.article-header{margin-bottom:2.8rem}.article-kicker{font-family:var(--sans);color:var(--ink-3);font-variant-numeric:tabular-nums;letter-spacing:.02em;margin:0 0 1rem;font-size:.78rem}.article-title{letter-spacing:.01em;text-wrap:balance;margin:0 0 1.1rem;font-size:clamp(1.75rem,5vw,2.35rem);font-weight:700;line-height:1.32}.article-dek{color:var(--ink-2);margin:0 0 1.4rem;font-size:1.02rem;line-height:1.75}.tags{font-family:var(--sans);flex-wrap:wrap;gap:.4rem .9rem;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.tags a{color:var(--ink-3);text-decoration:none}.tags a:hover{color:var(--rope)}.toc{font-family:var(--sans);border-left:2px solid var(--rule);margin:-1.2rem 0 2.4rem;padding-left:1rem;font-size:.8rem}.toc summary{cursor:pointer;color:var(--ink-3);letter-spacing:.12em;list-style:none}.toc summary::-webkit-details-marker{display:none}.toc summary:after{content:" ＋"}.toc details[open] summary:after{content:""}.toc ol{margin:.5rem 0 0;padding:0;line-height:1.6;list-style:none}.toc li{margin:.3rem 0}.toc li.d3{padding-left:.9rem}.toc a{color:var(--ink-2);text-decoration:none}.toc a:hover,.toc a.active{color:var(--rope)}@media (width>=1260px){.toc{border:0;width:12rem;margin:0;padding:0;position:absolute;top:0;bottom:0;right:calc(100% + 3.5rem)}.toc details{border-right:1px solid var(--rule);text-align:right;padding-right:1.2rem;position:sticky;top:2rem}.toc summary{pointer-events:none}.toc summary:after{content:""}.toc li.d3{padding-left:0;font-size:.95em}}.prose{hanging-punctuation:allow-end;overflow-wrap:break-word}.prose>:first-child{margin-top:0}.prose p{text-align:justify;text-justify:inter-character;margin:0 0 1.15em}.prose h1,.prose h2,.prose h3,.prose h4{scroll-margin-top:1.5rem;font-weight:700;line-height:1.45}.article .prose:not(.about)>h1:first-child{display:none}.prose.about>h1:first-child{font-family:var(--serif-en);margin:0 0 1.6rem;font-size:clamp(2rem,6vw,2.8rem);font-style:italic;font-weight:400;line-height:1.1}.prose h2{margin:2.6em 0 .9em;font-size:1.32rem}.prose h3{margin:2em 0 .7em;font-size:1.12rem}.prose h4{color:var(--ink-2);margin:1.6em 0 .5em;font-size:1rem}.prose strong{background:linear-gradient(transparent 62%, var(--mark) 62%);font-weight:700}.prose em{font-family:var(--serif-en);font-style:italic}.prose ul,.prose ol{margin:0 0 1.15em;padding-left:1.5em}.prose li{margin:.3em 0}.prose li::marker{color:var(--ink-3)}.prose blockquote{border-left:2px solid var(--rope);color:var(--ink-2);margin:1.8em 0;padding:.1em 0 .1em 1.2em}.prose blockquote p{text-align:left}.prose blockquote p:last-child{margin-bottom:0}.prose blockquote:lang(en),.prose blockquote p:only-child:not(:has(:is(span,a))){font-family:var(--serif-en)}.prose hr{text-align:center;border:0;height:1em;margin:3em auto}.prose hr:before{content:"· · ·";color:var(--ink-3);letter-spacing:.6em}.prose img{border-radius:3px;width:auto;height:auto;max-height:80vh;margin:2em auto;display:block}.prose figure{margin:2em 0}.prose figcaption{font-family:var(--sans);color:var(--ink-3);text-align:center;margin-top:.6rem;font-size:.8rem}.prose code{font-family:var(--mono);background:var(--bg-sunk);border-radius:4px;padding:.12em .36em;font-size:.86em}.prose pre{font-family:var(--mono);background:var(--bg-elev);border:1px solid var(--rule);border-radius:6px;margin:1.6em 0;padding:1rem 1.2rem;font-size:.84rem;line-height:1.65;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose pre.astro-code,.prose pre.astro-code span{color:var(--shiki-light)}:root[data-theme=dark] .prose pre.astro-code,:root[data-theme=dark] .prose pre.astro-code span{color:var(--shiki-dark)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .prose pre.astro-code,:root:not([data-theme=light]) .prose pre.astro-code span{color:var(--shiki-dark)}}.prose table{border-collapse:collapse;width:100%;margin:1.6em 0;font-size:.92rem;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;padding:.5em .8em}.prose th{border-bottom-width:2px;font-weight:700}.prose a[href^=http]:after{content:"↗";font-family:var(--sans);vertical-align:.35em;color:var(--ink-3);margin-left:.12em;font-size:.7em}.prose a.internal{color:var(--accent)}.concept{color:inherit;text-decoration:underline dashed var(--rope-soft);text-underline-offset:.26em;cursor:help;transition:text-decoration-color .15s var(--ease), background .15s var(--ease);border-radius:2px;text-decoration-thickness:1px}.concept:hover,.concept:focus-visible{text-decoration-color:var(--rope);background:var(--mark)}.popover{z-index:20;background:var(--bg-elev);border:1px solid var(--rule);max-width:min(340px,100vw - 24px);box-shadow:var(--shadow);opacity:0;transition:opacity .14s var(--ease), transform .14s var(--ease);pointer-events:none;border-radius:8px;padding:.85rem 1rem;font-size:.86rem;line-height:1.65;position:absolute;transform:translateY(3px)}.popover.on{opacity:1;transform:none}.popover p{margin:0}.pop-kicker{font-family:var(--sans);color:var(--ink-3);letter-spacing:.06em;font-size:.72rem}.pop-title{font-weight:700;margin:.15rem 0 .3rem!important}.pop-body{color:var(--ink-2)}.connections{border-top:1px solid var(--rule);margin-top:4rem;padding-top:1.6rem}.conn-title{font-family:var(--sans);letter-spacing:.3em;color:var(--ink-3);margin:0 0 1.4rem;font-size:.75rem;font-weight:600}.conn-grid{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.8rem 2.5rem;display:grid}.conn-grid h3{font-family:var(--sans);color:var(--ink-2);letter-spacing:.06em;margin:0 0 .6rem;font-size:.78rem;font-weight:600}.conn-grid ul{margin:0;padding:0;font-size:.95rem;line-height:1.6;list-style:none}.conn-grid li{margin:0 0 .55rem}.conn-grid a{text-decoration:none}.conn-grid a:hover{text-decoration:underline;text-decoration-color:var(--accent-soft)}.why,.also{font-family:var(--sans);color:var(--ink-3);margin-top:.1rem;font-size:.74rem;display:block}.also a{color:var(--ink-2)}.conn-note{font-family:var(--sans);color:var(--ink-3);margin:.8rem 0 0;font-size:.74rem;line-height:1.6}.map-tags{margin-top:2.4rem}.map-tags h2{font-family:var(--sans);letter-spacing:.08em;margin:0 0 .8rem;font-size:.82rem;font-weight:600}.map-tags h2 a{color:var(--ink-2);text-decoration:none}.conn-more{font-family:var(--sans);margin:1.8rem 0 0;font-size:.78rem}.conn-more a{text-decoration:none}.graph{width:100%;height:auto;font-family:var(--sans);display:block;overflow:visible}.graph .edge{stroke:var(--rule);stroke-width:1.2px;transition:stroke .15s,opacity .15s}.graph .edge.link{stroke:var(--accent-soft);stroke-width:1.6px}.graph .edge.concept{stroke:var(--rope-soft);stroke-dasharray:3 3}.graph .node{cursor:default;transition:opacity .15s}.graph a.node{cursor:pointer;text-decoration:none}.graph .node text{fill:var(--ink-2);paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round;font-size:12px}.graph .post circle{fill:var(--accent)}.graph .post text{fill:var(--ink);font-family:var(--serif);font-size:13px}.graph .post.focus circle{fill:var(--bg);stroke:var(--accent);stroke-width:3px}.graph .post.focus text{font-weight:700}.graph .concept{background:0 0;text-decoration:none}.graph .concept circle{fill:var(--bg);stroke:var(--rope);stroke-width:1.5px;stroke-dasharray:2.5 2}.graph .concept text{fill:var(--rope)}.graph .tag rect{fill:var(--ink-3)}.graph .tag text{fill:var(--ink-3);font-size:11px}.graph a.node:hover text{fill:var(--accent)}.graph.dim .node:not(.hot){opacity:.18}.graph.dim .edge:not(.hot){opacity:.12}.graph .edge.hot{stroke:var(--ink-2)}.graph.hide-concept .concept,.graph.hide-concept .edge.concept,.graph.hide-tag .tag,.graph.hide-tag .edge.tag{display:none}.site-map{background:var(--bg-elev);border:1px solid var(--rule);border-radius:10px;margin:0 0 1rem;padding:0;overflow:hidden}.site-map .graph{height:clamp(420px,70vh,720px);overflow:hidden}.site-map .graph.live{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.site-map .graph.live.grabbing{cursor:grabbing}.site-map .graph.live .node{cursor:pointer}.map-hint{font-family:var(--sans);color:var(--ink-3);text-align:center;border-top:1px solid var(--rule);padding:.5rem .8rem;font-size:.72rem;display:none}.site-map:has(.graph.live) .map-hint{display:block}.map-reset{appearance:none;font:inherit;color:var(--ink-2);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;margin-left:auto;padding:.2rem .8rem}.map-reset:hover{color:var(--ink);border-color:var(--rope-soft)}@media (width<=720px){.site-map .graph{height:60vh}.site-map .graph .node text{font-size:15px}.site-map .graph .post text{font-size:16px}}.site-map .graph .node text{stroke:var(--bg-elev)}.map-controls{font-family:var(--sans);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.4rem 1.4rem;margin-bottom:1rem;font-size:.8rem;display:flex}.map-controls label{cursor:pointer;align-items:center;gap:.4rem;display:inline-flex}.map-controls input{accent-color:var(--rope)}.key{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:.35rem;display:inline-block}.key.post{background:var(--accent)}.key.concept{border:1.5px dashed var(--rope)}.key.tag{background:var(--ink-3);border-radius:1px;width:8px;height:8px}.map-legend{color:var(--ink-3)}.tag-along{font-family:var(--sans);color:var(--ink-3);flex-wrap:wrap;align-items:baseline;gap:.4rem .5rem;margin:.9rem 0 0;font-size:.82rem;display:flex}.tag-along>span{margin-right:.2rem}.tag-along a{border:1px solid var(--rule);color:var(--ink-2);transition:border-color .18s var(--ease), color .18s var(--ease);border-radius:999px;padding:.15rem .55rem;text-decoration:none}.tag-along a:hover{border-color:var(--rope-soft);color:var(--rope)}.tag-along .n{font-family:var(--mono);color:var(--ink-3);margin-left:.3rem;font-size:.7rem}.chart-notes{border-top:1px solid var(--rule);gap:1rem;margin-top:3rem;padding-top:1.2rem;display:grid}.chart-notes-title{font-family:var(--sans);color:var(--ink-3);margin:0;font-size:.75rem}.chart-note{border-left:2px solid var(--rope);background:var(--bg-elev);color:var(--ink-2);font-family:var(--sans);transition:background-color .18s var(--ease), transform .18s var(--ease);border-radius:0 6px 6px 0;margin:-.2rem 0 1.2rem;padding:.7rem .9rem .75rem;font-size:.8rem;line-height:1.6;text-decoration:none;display:block}.chart-note>span{display:block}.chart-note-kicker{letter-spacing:.18em;color:var(--rope);font-size:.68rem}.chart-note-isle{font-family:var(--serif);color:var(--ink);margin:.1rem 0 .15rem;font-size:1.05rem;font-weight:700}.chart-note-isle i{font-family:var(--serif-en);color:var(--ink-3);margin-left:.5rem;font-size:.85rem;font-weight:400}.chart-note-fact b{color:var(--rope);font-variant-numeric:tabular-nums;font-size:1.05rem}.chart-note-go{color:var(--accent);margin-top:.3rem}.chart-note-go span{transition:transform .2s var(--ease);margin-left:.25em;display:inline-block}.chart-note:hover .chart-note-go span{transform:translate(3px)}.chart-notes .chart-note{margin:0}@media (width>=1180px){.prose.about .chart-note{float:right;clear:right;width:13rem;margin:-2.9rem -15.5rem 0 0;transform:rotate(.6deg)}.prose.about .chart-note:hover{transform:rotate(0)translateY(-1px)}}.arrival{margin-top:3rem}.arrival-head{font-family:var(--sans);color:var(--ink-3);letter-spacing:.06em;align-items:center;gap:.1rem;margin:0 0 .9rem;font-size:.8rem;display:flex}.arrival-anchor{fill:none;width:.95rem;height:auto;stroke:var(--rope);stroke-width:2px;stroke-linecap:round;margin-right:.45rem;overflow:visible}.arrival.is-arrived .arrival-card{border-color:var(--rope-soft);animation:arrival-dock .7s var(--ease) both}@keyframes arrival-dock{0%{box-shadow:none;transform:translateY(6px)}60%{box-shadow:var(--shadow);transform:translateY(-2px)}to{box-shadow:none;transform:translateY(0)}}.arrival-more{font-family:var(--sans);flex-wrap:wrap;gap:.35rem 1.4rem;margin:.9rem 0 0;font-size:.8rem;display:flex}.arrival-more a{color:var(--ink-2);text-decoration:none}.arrival-more a:hover{color:var(--accent)}.voyage-bar{--p:0;--edge:max(12px, calc((100% - 72rem) / 2));z-index:20;pointer-events:none;background:linear-gradient(to bottom, var(--bg) 70%, transparent);opacity:0;height:40px;transition:opacity .25s var(--ease), transform .25s var(--ease);position:fixed;inset:0 0 auto;transform:translateY(-100%)}.voyage-bar.is-ready.is-sailing{opacity:1;transform:none}.voyage-bar:before,.voyage-done{content:"";left:var(--edge);height:1.5px;position:absolute;bottom:17px}.voyage-bar:before{right:var(--edge);background:repeating-linear-gradient(to right, var(--rope) 0 5px, transparent 5px 10px);opacity:.45}.voyage-done{width:calc(var(--p) * (100% - 2 * var(--edge) - 22px));background:var(--rope)}.voyage-boat{bottom:12px;left:calc(var(--edge) - 10px + var(--p) * (100% - 2 * var(--edge) - 22px));transform-origin:50% 80%;width:22px;height:auto;animation:4.5s ease-in-out infinite log-bob;position:absolute;overflow:visible}.voyage-boat .hull{fill:var(--rope)}.voyage-boat .sail{fill:var(--bg);stroke:var(--ink-2);stroke-width:2.4px;stroke-linejoin:round}.voyage-boat .line{fill:none;stroke:var(--rope);stroke-width:2.4px;stroke-linecap:round}.voyage-port{right:calc(var(--edge) - 4px);fill:none;width:12px;height:auto;stroke:var(--ink-3);stroke-width:2.2px;stroke-linecap:round;transition:stroke .3s var(--ease);position:absolute;bottom:12px;overflow:visible}.voyage-bar.is-docked .voyage-port{stroke:var(--rope)}.voyage-bar.is-docked .voyage-boat{animation:none}.tag-cloud{flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.tag-cloud a{border:1px solid var(--rule);color:var(--ink);border-radius:999px;align-items:baseline;gap:.45rem;padding:.35rem .8rem;font-size:.95rem;text-decoration:none;display:inline-flex}.tag-cloud a:hover{border-color:var(--rope-soft);color:var(--rope)}.count{font-family:var(--sans);color:var(--ink-3);font-size:.72rem}.notfound{padding:1.5rem 0 3rem}.notfound-chart{max-width:22rem;margin:0 0 .5rem}.notfound-chart svg{width:100%;height:auto;display:block;overflow:visible}.notfound-chart .serpent{transform-origin:120px 75px;animation:7s ease-in-out infinite serpent-swim}.notfound-chart .dragon-line{fill:none;stroke:var(--ink-2);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.notfound-chart .dragon-fins{fill:none;stroke:var(--ink-2);stroke-width:.85px;stroke-linejoin:round}.notfound-chart .fine{fill:none;stroke:var(--ink-3);stroke-width:.6px}.notfound-chart .rose-fill{fill:var(--rope)}.notfound-chart figcaption{font-family:var(--serif-en);letter-spacing:.18em;color:var(--ink-3);margin-top:.4rem;padding-left:32%;font-size:.85rem;font-style:italic}@keyframes serpent-swim{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(6px,-4px)rotate(-1.2deg)}}.notfound-code{font-family:var(--serif-en);color:var(--rope);margin:1.2rem 0 1rem;font-size:4.5rem;font-style:italic;line-height:1}.notfound-code span{font-family:var(--sans);letter-spacing:.15em;color:var(--ink-3);vertical-align:middle;font-size:.9rem;font-style:normal}.notfound h1{font-family:var(--serif-en);margin:0 0 .8rem;font-size:1.5rem;font-weight:400;line-height:1.4}.notfound-where{color:var(--ink-2);font-family:var(--sans);margin:0 0 1.6rem;font-size:.9rem}.notfound-path{overflow-wrap:anywhere}.notfound-guess{border-left:2px solid var(--rope);background:var(--bg-elev);font-family:var(--sans);border-radius:0 6px 6px 0;margin:-.6rem 0 1.6rem;padding:.6rem .9rem;font-size:.95rem}.notfound-guess a{font-family:var(--serif);font-weight:700}.notfound-ways{grid-template-columns:repeat(3,1fr);gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.notfound-ways li:first-child{grid-column:1/-1}.notfound-way{box-sizing:border-box;border:1px solid var(--rule);height:100%;color:var(--ink);transition:border-color .18s var(--ease), background-color .18s var(--ease), transform .18s var(--ease);border-radius:8px;padding:.8rem 1rem;text-decoration:none;display:block}.notfound-way:hover{border-color:var(--rope-soft);background:var(--bg-elev);transform:translateY(-1px)}.notfound-way>span{display:block}.notfound-way-k{font-family:var(--sans);color:var(--ink-3);font-size:.75rem}.notfound-way-t{font-family:var(--serif);margin-top:.2rem;font-weight:700}.notfound-way.is-main{border-color:var(--rope-soft);background:var(--bg-elev)}.notfound-way.is-main .notfound-way-k{color:var(--rope)}.notfound-way.is-main .notfound-way-t{font-size:1.2rem}@media (width<=600px){.notfound-ways{grid-template-columns:1fr}.notfound-code{font-size:3.4rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media print{.site-header,.site-footer,.connections,.arrival,.voyage-bar,.toc{display:none}}:root{--stamp-0:#af3029;--stamp-1:#205ea6;--stamp-2:#66800b;--stamp-3:#5e409d;--stamp-4:#24837b;--stamp-5:#a02f6f}:root[data-theme=dark]{--stamp-0:#d14d41;--stamp-1:#4385be;--stamp-2:#879a39;--stamp-3:#8b7ec8;--stamp-4:#3aa99f;--stamp-5:#ce5d97}.ports-header .page-lede{max-width:var(--measure)}.ports-tally{color:var(--ink-3);font-family:var(--mono);letter-spacing:.04em;margin:.75rem 0 0;font-size:.75rem}.ports-bar{z-index:5;background:var(--bg);border-bottom:1px solid var(--rule);font-family:var(--sans);flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin:-1rem 0 1.5rem;padding:.6rem 0;font-size:.85rem;display:flex;position:sticky;top:0}.ports-seas{flex-wrap:wrap;flex:1;gap:.25rem 1rem;display:flex}.ports-seas a{color:var(--ink-2);text-decoration:none}.ports-seas a:hover{color:var(--accent)}.ports-dice{border:1px solid var(--ink-3);min-height:36px;color:var(--ink);font:inherit;cursor:pointer;transition:background-color .16s var(--ease), color .16s var(--ease);background:0 0;border-radius:999px;padding:0 .9rem}.ports-dice:hover{background:var(--ink);color:var(--bg)}.ports-dice:active{transform:translateY(1px)}.sea{margin-bottom:2.5rem;scroll-margin-top:4rem}.sea h2{align-items:baseline;gap:.5rem;margin:0 0 1rem;font-size:1.15rem;display:flex}.sea h2 .count{color:var(--ink-3);font-family:var(--mono);font-size:.75rem;font-weight:400}.ports{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:.5rem 1.5rem;margin:0;padding:0;list-style:none;display:grid}.port{transition:background-color .2s var(--ease);border-radius:6px;grid-template-columns:72px 1fr;align-items:start;gap:.9rem;margin:0 -.75rem;padding:.75rem;scroll-margin:6rem;display:grid;position:relative}.port:hover,.port.landing{background:var(--bg-elev)}.stamp{width:72px;height:72px;color:var(--stamp);transform:rotate(var(--tilt));transition:transform .22s var(--ease)}.port:hover .stamp{transform:rotate(0)}.seal{width:72px;height:72px;position:relative}.seal.has-icon .stamp{opacity:.38}:root[data-theme=dark] .seal.has-icon .stamp{opacity:.5}.port-icon{box-sizing:border-box;image-rendering:auto;width:34px;height:34px;transition:transform .22s var(--ease);background:#fffcf0;border-radius:8px;padding:3px;position:absolute;top:19px;left:19px;box-shadow:0 0 0 1px #100f0f14,0 1px 3px #100f0f1f}:root[data-theme=dark] .port-icon{filter:brightness(.92);box-shadow:0 0 0 1px #ffffff14}.port:hover .port-icon{transform:scale(1.06)}.stamp .line{fill:none;stroke:currentColor}.stamp text{fill:currentColor;text-anchor:middle}.stamp .host{font-family:var(--mono);letter-spacing:.06em;font-size:6.6px;font-weight:700}.stamp .glyph{font-family:var(--serif);font-size:23px;font-weight:700}.port h3{margin:.1rem 0 0;font-size:1rem;line-height:1.4}.port h3 a{color:var(--ink);text-decoration:none}.port h3 a:after{content:"";border-radius:6px;position:absolute;inset:0}.port h3 a:focus-visible{outline:none}.port:has(h3 a:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.port:hover h3 a{color:var(--accent)}.port-host{color:var(--ink-3);font-family:var(--mono);overflow-wrap:anywhere;margin:.1rem 0 0;font-size:.72rem}.port-note{color:var(--ink-2);margin:.35rem 0 0;font-size:.9rem;line-height:1.6}.port-seen{z-index:1;color:var(--ink-3);font-family:var(--sans);margin:.35rem 0 0;font-size:.78rem;position:relative}.port-seen a{color:var(--rope)}.port.landing .stamp{animation:.42s cubic-bezier(.2,0,0,1) .28s both stamp-thump}.seal.has-icon .stamp{--ink-max:.38}:root[data-theme=dark] .seal.has-icon .stamp{--ink-max:.5}@keyframes stamp-thump{0%{transform:rotate(var(--tilt)) scale(1.5) translateY(-6px);opacity:0}55%{transform:rotate(var(--tilt)) scale(.94);opacity:var(--ink-max,1)}to{transform:rotate(var(--tilt)) scale(1);opacity:var(--ink-max,1)}}.passport{color:var(--ink-3);align-items:center;gap:.55rem;margin:0;font-size:.78rem;display:flex}.passport-label{border:1px solid var(--rule);color:var(--ink-2);letter-spacing:.2em;border-radius:3px;padding:.05rem .45rem}.passport-dots{gap:4px;display:inline-flex}.passport-dots i{border:1.5px dashed color-mix(in srgb, var(--stamp) 55%, transparent);width:9px;height:9px;transition:background-color .3s var(--ease), border-color .3s var(--ease);border-radius:50%}.passport-dots i.on{background:var(--stamp);border:1.5px solid var(--stamp)}.passport-count{font-variant-numeric:tabular-nums}.port.visited .seal.has-icon .stamp{opacity:.8;--ink-max:.8}.visa{z-index:1;background:color-mix(in srgb, var(--bg) 70%, transparent);white-space:nowrap;border:1.5px solid var(--rope);color:var(--rope);font-family:var(--mono);letter-spacing:.04em;opacity:0;pointer-events:none;filter:url(#ink);border-radius:3px;padding:0 .3rem;font-size:.56rem;font-weight:700;position:absolute;top:calc(.75rem + 54px);left:calc(.75rem + 2px);transform:rotate(-8deg)}.port.visited .visa{opacity:.85}.port.just-stamped .visa{animation:.42s cubic-bezier(.2,0,0,1) both visa-thump}.port.just-stamped .stamp{animation:.42s cubic-bezier(.2,0,0,1) .12s both stamp-thump}@keyframes visa-thump{0%{opacity:0;transform:rotate(-8deg)scale(1.8)}60%{opacity:.85;transform:rotate(-8deg)scale(.92)}to{opacity:.85;transform:rotate(-8deg)scale(1)}}@media (width<=600px){.ports-bar{gap:.5rem .75rem}.passport{flex-basis:100%;order:3}}@media (prefers-reduced-motion:reduce){.stamp,.port,.port-icon{transition:none}.port.landing .stamp,.port.just-stamped .stamp,.port.just-stamped .visa{animation:none}}@media (forced-colors:active){.stamp{color:canvastext}}@media (width<=520px){.local-preview-header[data-astro-cid-hkbrpulz] .bar[data-astro-cid-hkbrpulz]{gap:.35rem}.local-preview-header[data-astro-cid-hkbrpulz] nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:not(.icon-link){letter-spacing:0;white-space:nowrap;padding:.3rem .25rem}}@media (width<=360px){.local-preview-header[data-astro-cid-hkbrpulz] .icon-link[data-astro-cid-hkbrpulz]{display:none}}
