@import "https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Noto+Serif+SC:wght@500;600&family=Noto+Sans+SC:wght@400;500&family=JetBrains+Mono:wght@400;500&family=Caveat:wght@500;600&family=Ma+Shan+Zheng&display=swap";.node[data-v-fb59af82]{font-family:var(--mono);font-size:.82rem;line-height:1.7}.toggle[data-v-fb59af82]{cursor:pointer;-webkit-user-select:none;user-select:none;width:1em;color:var(--faded);transition:transform .12s;display:inline-block}.toggle[data-v-fb59af82]:hover{color:var(--ink)}.key[data-v-fb59af82]{color:#859900}.sep[data-v-fb59af82]{color:var(--faded)}.brace[data-v-fb59af82]{color:var(--faded);font-style:italic}.children[data-v-fb59af82]{padding-left:1.5em}.closer[data-v-fb59af82]{color:var(--faded)}.value[data-v-fb59af82]{color:#2aa198;font-weight:500}.value.string[data-v-fb59af82]{color:#268bd2}.value.number[data-v-fb59af82]{color:#2aa198}.value.bool[data-v-fb59af82]{color:#cb4b16}.value.null[data-v-fb59af82]{color:#6c71c4}.depth-label[data-v-f0964cfb]{font-family:var(--mono);color:var(--faded);cursor:pointer;align-items:center;gap:.4rem;font-size:.68rem;display:flex}.depth-label select[data-v-f0964cfb]{border:1px solid var(--binding);font:inherit;background:var(--paper);color:var(--ink);cursor:pointer;border-radius:3px;padding:.15rem .4rem}.tree[data-v-f0964cfb]{padding:1rem 1.2rem;overflow-x:auto}:root{--paper:#ece6d6;--paper-2:#e4dcc7;--ink:#2a2620;--faded:#857a66;--rule:#d8cfb8;--binding:#c9be9f;--blaze:#c15b34;--pine:#3b5a50;--serif:"Spectral", "Noto Serif SC", Georgia, serif;--sans:"Noto Sans SC", -apple-system, "Segoe UI", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--hand:"Caveat", "Ma Shan Zheng", cursive;--measure:66ch;--edge:clamp(1.1rem, 4vw, 4rem)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-color:var(--paper);background-image:radial-gradient(var(--rule) 1px, transparent 1.4px);background-position:-1px -1px;background-size:24px 24px;margin:0;font-size:17px;line-height:1.72}.site{max-width:1120px;padding-inline:var(--edge);margin-inline:auto}.mast{border-bottom:1.5px solid var(--binding);justify-content:space-between;align-items:baseline;margin-bottom:.5rem;padding-block:1.5rem;display:flex}.mark{font-family:var(--serif);color:var(--ink);align-items:center;gap:.5rem;font-size:1.4rem;font-weight:600;text-decoration:none;display:inline-flex}.nav{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;align-items:baseline;gap:1.4rem;font-size:.72rem;display:flex}.nav a{color:var(--faded);padding-bottom:2px;text-decoration:none}.nav a:hover{color:var(--ink)}.nav a.router-link-exact-active,.nav a[aria-current=page]{color:var(--ink);border-bottom:2px solid var(--blaze)}.nav .muted{color:var(--binding)}.page{position:relative}.page:before{content:"";border-left:1.5px solid var(--binding);box-shadow:3px 0 0 -2px var(--blaze);opacity:.5;position:absolute;top:0;bottom:0;left:clamp(3.2rem,11vw,8.5rem)}@media (width<=720px){.page:before{display:none}}.intro{padding:clamp(2.5rem,8vw,5rem) 0 2rem clamp(4.4rem,13vw,10.5rem)}.intro .eyebrow{font-family:var(--hand);color:var(--blaze);margin-bottom:.3rem;font-size:1.5rem;display:inline-block;transform:rotate(-2deg)}.intro h1{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 .9rem;font-size:clamp(2.3rem,6vw,4rem);font-weight:500;line-height:1.08}.intro .lede{color:var(--faded);max-width:40ch;margin:0;font-size:1rem}.log{padding-bottom:4rem}.entry{color:inherit;border-top:1px solid var(--rule);padding:1.7rem 0 1.7rem clamp(4.4rem,13vw,10.5rem);text-decoration:none;transition:background-color .3s;display:block;position:relative}.entry:hover{background:color-mix(in srgb, var(--paper-2) 55%, transparent)}.entry .marker{width:40px;height:40px;color:var(--ink);transition:transform .3s,color .3s;position:absolute;top:1.7rem;left:clamp(.5rem,4vw,3.4rem);transform:rotate(-4deg)}.entry:nth-child(2n) .marker{transform:rotate(3deg)}.entry:hover .marker{color:var(--blaze);transform:rotate(0)scale(1.08)}.entry .stamp{font-family:var(--hand);color:var(--faded);margin-bottom:.25rem;font-size:1.15rem;display:inline-block;transform:rotate(-1deg)}.entry .stamp .n{font-family:var(--mono);letter-spacing:.04em;font-size:.72rem}.entry h2{font-family:var(--serif);letter-spacing:-.005em;margin:.1rem 0 .4rem;font-size:clamp(1.3rem,2.6vw,1.85rem);font-weight:500;line-height:1.24;transition:color .25s}.entry:hover h2{color:var(--pine)}.entry .dek{color:var(--faded);max-width:54ch;margin:0;font-size:.95rem}.entry .date{font-family:var(--mono);letter-spacing:.08em;color:var(--faded);text-transform:uppercase;margin-top:.55rem;font-size:.68rem;display:block}.entry.summit{padding-top:2.4rem}.entry.summit .flag{font-family:var(--hand);color:var(--blaze);margin-bottom:.1rem;font-size:1.4rem;display:inline-block;transform:rotate(-3deg)}.entry.summit h2{font-size:clamp(1.9rem,4.2vw,2.9rem);line-height:1.12}.entry.summit .dek{font-size:1.05rem}.entry.summit .marker{width:52px;height:52px;top:2.4rem}.foot{border-top:1.5px solid var(--binding);font-family:var(--mono);letter-spacing:.09em;color:var(--faded);text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:2rem 0 3rem clamp(4.4rem,13vw,10.5rem);font-size:.68rem;display:flex}.foot a{color:var(--faded);text-decoration:none}.foot a:hover{color:var(--ink)}.foot .sign{font-family:var(--hand);text-transform:none;letter-spacing:0;font-size:1.25rem;transform:rotate(-1.5deg)}.reader{max-width:calc(var(--measure) + 12rem);padding:clamp(2rem,6vw,4rem) 0 4rem clamp(4.4rem,13vw,10.5rem)}.reader .back{font-family:var(--mono);letter-spacing:.08em;color:var(--faded);margin-bottom:2rem;font-size:.72rem;text-decoration:none;display:inline-block}.reader .back:hover{color:var(--blaze)}.fieldlog{border-bottom:1px dashed var(--binding);align-items:center;gap:1rem;margin-bottom:1.6rem;padding-bottom:1.2rem;display:flex}.fieldlog .marker{width:44px;height:44px;color:var(--blaze);flex:none;transform:rotate(-4deg)}.fieldlog .meta{font-family:var(--hand);color:var(--faded);font-size:1.2rem;line-height:1.4}.fieldlog .meta .n{font-family:var(--mono);letter-spacing:.05em;font-size:.72rem;display:block}.article h1{font-family:var(--serif);letter-spacing:-.01em;max-width:22ch;margin:0 0 1.6rem;font-size:clamp(2rem,4.6vw,3rem);font-weight:500;line-height:1.14}.article{max-width:var(--measure)}.article p{margin:0 0 1.3rem}.article h2{font-family:var(--serif);border-top:1px solid var(--rule);margin:2.6rem 0 1rem;padding-top:1.3rem;font-size:1.55rem;font-weight:500}.article strong{font-weight:600}.article a{color:var(--pine);text-underline-offset:3px}.article blockquote{border-left:3px solid var(--blaze);color:var(--faded);margin:1.8rem 0;padding:.3rem 0 .3rem 1.3rem;font-style:italic}.article pre{color:#ece6d6;font-family:var(--mono);background:#26221b;border-radius:3px;margin:1.5rem 0;padding:1.1rem 1.3rem;font-size:.85rem;line-height:1.7;overflow-x:auto}.article code{font-family:var(--mono);background:var(--paper-2);border-radius:3px;padding:.1em .4em;font-size:.88em}.article pre code{background:0 0;padding:0}.article img{border-radius:4px;max-width:100%;height:auto;margin:1.5rem 0}.comments{border-top:1px solid var(--rule);margin-top:3rem;padding-top:2rem}.comments h2{font-family:var(--serif);color:var(--ink);margin:0 0 1.5rem;font-size:1.4rem;font-weight:500}.comment{border-bottom:1px solid var(--rule);padding:1rem 0}.comment .by{font-family:var(--mono);letter-spacing:.08em;color:var(--faded);text-transform:uppercase;margin-bottom:.3rem;font-size:.7rem}.comment .by .name{color:var(--pine);font-weight:600}.comment .body{color:var(--ink);font-size:.95rem;line-height:1.65}.comment .actions{gap:1rem;margin-top:.5rem;display:flex}.comment .actions button{color:var(--faded);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:0;font-size:.65rem}.comment .actions button:hover{color:var(--blaze)}.comment .replies{border-left:2px solid var(--rule);margin-top:.5rem;margin-left:clamp(1.5rem,4vw,3rem);padding-left:1rem}.comment-form{margin-bottom:2rem}.comment-form textarea{border:1px solid var(--binding);background:var(--paper);width:100%;min-height:6rem;color:var(--ink);font-family:var(--sans);resize:vertical;border-radius:4px;padding:.8rem 1rem;font-size:.95rem;line-height:1.65}.comment-form textarea:focus{outline:2px solid var(--pine);border-color:var(--pine)}.comment-form .row{justify-content:space-between;align-items:center;margin-top:.7rem;display:flex}.comment-form .row .hint{font-family:var(--hand);color:var(--faded);font-size:1rem}.comment-form .row button{background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:0;border-radius:4px;padding:.6rem 1.4rem;font-size:.72rem}.comment-form .row button:hover{background:var(--pine)}.comment-form .row button:disabled{opacity:.5;cursor:wait}.comment-error{color:var(--blaze);margin-top:.5rem;font-size:.85rem}.auth-page{place-items:center;min-height:100svh;padding:24px;display:grid}.login-card{border:1px solid var(--binding);background:var(--paper);border-radius:4px;width:min(100%,420px);padding:44px 40px;box-shadow:0 2px 20px #2a26200f}.login-card .brand{font-family:var(--serif);color:var(--ink);align-items:center;gap:.5rem;font-size:1.4rem;font-weight:600;text-decoration:none;display:inline-flex}.login-card .eyebrow{color:var(--faded);font-family:var(--hand);margin:36px 0 6px;font-size:1.3rem;display:inline-block;transform:rotate(-2deg)}.login-card h1{font-family:var(--serif);letter-spacing:-.02em;margin:0 0 10px;font-size:2rem;font-weight:500}.login-card .description{color:var(--faded);margin:0 0 28px;font-size:.95rem}.login-form{gap:18px;display:grid}.login-form label{color:var(--ink);font-size:.85rem;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;gap:6px;display:grid}.login-form input{border:1px solid var(--binding);width:100%;color:var(--ink);background:var(--paper);font-family:var(--sans);border-radius:4px;padding:11px 12px;font-size:1rem}.login-form input:focus{outline:2px solid var(--pine);border-color:var(--pine)}.login-form button{color:var(--paper);background:var(--ink);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border:0;border-radius:4px;padding:12px;font-size:.75rem;font-weight:600}.login-form button:hover{background:var(--pine)}.login-form button:disabled{cursor:wait;opacity:.65}.form-error{color:var(--blaze);margin:-4px 0 0;font-size:.85rem}.switch{text-align:center;color:var(--faded);margin-top:28px;font-size:.9rem}.switch a{color:var(--pine);cursor:pointer;text-underline-offset:3px;text-decoration:underline}@media (width<=480px){.login-card{padding:32px 24px}}.tools-intro{padding:clamp(2rem,6vw,4rem) 0 2rem clamp(4.4rem,13vw,10.5rem)}.tools-intro .eyebrow{font-family:var(--hand);color:var(--blaze);margin-bottom:.3rem;font-size:1.5rem;display:inline-block;transform:rotate(-2deg)}.tools-intro h1{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 1rem;font-size:clamp(2rem,4.6vw,3rem);font-weight:500}.tools-intro .lede{color:var(--faded);max-width:40ch;font-size:1rem}.tool-list{max-width:calc(var(--measure) + 8rem);gap:1.5rem;padding:0 0 3rem clamp(4.4rem,13vw,10.5rem);display:grid}.tool-card{color:inherit;border:1px solid var(--rule);border-radius:4px;padding:1.5rem 1.8rem;text-decoration:none;transition:background-color .3s,border-color .3s;display:block}.tool-card:hover{background:color-mix(in srgb, var(--paper-2) 55%, transparent);border-color:var(--binding)}.tool-card h2{font-family:var(--serif);margin:0 0 .4rem;font-size:1.3rem;font-weight:500;transition:color .25s}.tool-card:hover h2{color:var(--pine)}.tool-card p{color:var(--faded);margin:0;font-size:.9rem}.tool-page{max-width:calc(var(--measure) + 14rem);padding:clamp(2rem,6vw,4rem) 0 4rem clamp(4.4rem,13vw,10.5rem)}.tool-page .back{font-family:var(--mono);letter-spacing:.08em;color:var(--faded);margin-bottom:2rem;font-size:.72rem;text-decoration:none;display:inline-block}.tool-page .back:hover{color:var(--blaze)}.tool-page h1{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 .6rem;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:500}.tool-page .desc{color:var(--faded);margin:0 0 2rem}.tool-page textarea{border:1px solid var(--binding);background:var(--paper);width:100%;min-height:16rem;color:var(--ink);font-family:var(--mono);resize:vertical;border-radius:4px;padding:1rem 1.2rem;font-size:.85rem;line-height:1.7}.tool-page textarea:focus{outline:2px solid var(--pine);border-color:var(--pine)}.tool-page .row{justify-content:space-between;align-items:center;margin-top:1rem;display:flex}.tool-page .row button{background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:0;border-radius:4px;padding:.7rem 1.6rem;font-size:.72rem}.tool-page .row button:hover{background:var(--pine)}.tool-page .tool-error{color:var(--blaze);font-size:.85rem}.tool-page .output{margin-top:2rem}.tool-page .output pre{color:#ece6d6;font-family:var(--mono);background:#26221b;border-radius:3px;padding:1.1rem 1.3rem;font-size:.82rem;line-height:1.7;overflow-x:auto}.empty{color:var(--faded);font-family:var(--hand);padding:3rem 0;font-size:1.3rem}.spinner{border:2px solid var(--rule);border-top-color:var(--blaze);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=720px){.intro,.log .entry,.foot,.reader,.tools-intro,.tool-list,.tool-page{padding-left:3.4rem}.entry .marker{width:34px;height:34px;left:-.2rem}.mast{flex-direction:column;gap:.8rem}}@media (prefers-reduced-motion:no-preference){.entry{opacity:0;animation:.55s forwards rise}.entry:first-child{animation-delay:40ms}.entry:nth-child(2){animation-delay:.1s}.entry:nth-child(3){animation-delay:.16s}.entry:nth-child(4){animation-delay:.22s}.entry:nth-child(5){animation-delay:.28s}.entry:nth-child(n+6){animation-delay:.33s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}}:focus-visible{outline:2px solid var(--pine);outline-offset:3px;border-radius:2px}
