:root{--paper:#eceee9;--paper-sink:#e3e6df;--ink:#1e2a24;--ink-soft:#4a554d;--line:#c6cbbf;--olive:#6b7a5e;--waymark:#e8b21e;--trail:#b4472f;--measure:38rem;--rail:2.75rem;--rail-x:1.375rem;--font-display:"Zilla Slab", "Noto Serif TC", Georgia, serif;--font-body:"Noto Serif TC", "Iowan Old Style", Georgia, "Times New Roman", serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1:.8rem;--step-0:1.0625rem;--step-1:1.2rem;--step-2:1.38rem;--step-3:clamp(1.75rem, 1.3rem + 2vw, 2.55rem)}@media (prefers-color-scheme:dark){:root{--paper:#191d1a;--paper-sink:#202521;--ink:#e7eae2;--ink-soft:#a4ac9f;--line:#333b34;--olive:#8b9a7d;--waymark:#efbb2a;--trail:#d9694e}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);font-feature-settings:"palt" 1;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.85}a{color:inherit;text-underline-offset:.18em;text-decoration:none;text-decoration-thickness:1px}img{max-width:100%;height:auto;display:block}::selection{background:var(--waymark);color:#1e2a24}.wrap{width:100%;max-width:calc(var(--measure) + var(--rail) + 3rem);margin-inline:auto;padding-inline:1.5rem}.wrap--wide{max-width:58rem}.site-header{border-bottom:1px solid var(--line)}.site-header .wrap{flex-wrap:wrap;align-items:baseline;gap:.35rem 1.5rem;padding-block:1.15rem;display:flex}.brand{font-family:var(--font-display);letter-spacing:.01em;font-size:1.25rem;font-weight:700}.brand__mark{color:var(--trail)}.tagline{font-family:var(--font-mono);letter-spacing:.22em;color:var(--ink-soft);text-transform:uppercase;font-size:.7rem}.site-nav{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;flex-wrap:wrap;gap:.15rem 1.15rem;margin-left:auto;display:flex}.site-nav a{border-bottom:2px solid #0000;padding-block:.15rem;transition:border-color .15s,color .15s}.site-nav a:hover,.site-nav a[aria-current=page]{border-color:var(--waymark)}main{padding-block:2.75rem 1rem}.site-footer{border-top:1px solid var(--line);margin-top:4.5rem}.site-footer .wrap{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;color:var(--ink-soft);flex-wrap:wrap;gap:.75rem 1.25rem;padding-block:1.75rem 2.5rem;display:flex}.site-footer a:hover{color:var(--trail)}.page-head{grid-template-columns:var(--rail) 1fr;border-bottom:1px solid var(--line);align-items:end;gap:0 .75rem;margin-bottom:2.25rem;padding-bottom:1.1rem;display:grid}.page-head__count{font-family:var(--font-mono);color:var(--trail);text-align:center;font-size:1.9rem;line-height:1}.page-head h1{font-family:var(--font-display);font-weight:700;font-size:var(--step-3);margin:0;line-height:1.1}.page-head__sub{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;color:var(--ink-soft);grid-column:2;margin-top:.35rem}.log{margin:0;padding:0;list-style:none;position:relative}.log:before{content:"";left:var(--rail-x);background:var(--line);transform-origin:top;width:2px;animation:.6s ease-out forwards draw-track;position:absolute;top:.2rem;bottom:.2rem;transform:scaleY(0)}@keyframes draw-track{to{transform:scaleY(1)}}.log__entry{grid-template-columns:var(--rail) 1fr;border-bottom:1px solid var(--line);gap:0 .75rem;padding-block:1.4rem;display:grid}.log__entry:first-child{padding-top:.4rem}.log__rail{position:relative}.log__node{background:var(--paper);border:2px solid var(--olive);border-radius:50%;width:11px;height:11px;transition:background .15s,border-color .15s,transform .15s;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}.log__entry:hover .log__node{background:var(--waymark);border-color:var(--waymark);transform:translate(-50%)scale(1.15)}.log__stamp{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;color:var(--ink-soft);align-items:center;gap:.7rem;display:flex}.log__stamp time{color:var(--ink)}.tag{font-family:var(--font-mono);letter-spacing:.05em;border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;padding:.1rem .45rem;font-size:.72rem}a.tag:hover{border-color:var(--olive);color:var(--ink)}.log__title{font-family:var(--font-display);font-weight:600;font-size:var(--step-1);margin:.3rem 0 0;line-height:1.35}.log__title a{background-image:linear-gradient(var(--trail), var(--trail));background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;transition:background-size .25s}.log__entry:hover .log__title a{background-size:100% 1px}.log__excerpt{color:var(--ink-soft);margin:.4rem 0 0;font-size:.98rem;line-height:1.7}.post{max-width:var(--measure);margin-inline:auto}.post-shell{grid-template-columns:minmax(0,1fr) 13.5rem;align-items:start;gap:3.25rem;display:grid}.post-shell .post{min-width:0;max-width:none;margin-inline:0}.sidebar{font-size:.9rem;line-height:1.6;position:sticky;top:1.5rem}.sidebar__block+.sidebar__block{border-top:1px solid var(--line);margin-top:1.9rem;padding-top:1.5rem}.sidebar__head{font-family:var(--font-mono);letter-spacing:.16em;color:var(--ink-soft);margin:0 0 .85rem;font-size:.7rem;font-weight:500}.sidebar ul{margin:0;padding:0;list-style:none}.sidebar__cats li+li,.sidebar__recent li+li{margin-top:.5rem}.sidebar__cats a{border-bottom:1px solid #0000;justify-content:space-between;gap:.75rem;display:flex}.sidebar__cats a:hover{border-color:var(--line)}.sidebar__cats a[aria-current=true] span:first-child{box-shadow:inset 0 -.4em 0 var(--waymark)}.sidebar__n{font-family:var(--font-mono);color:var(--ink-soft);font-size:.76rem}.sidebar__recent a{display:block}.sidebar__recent time{font-family:var(--font-mono);color:var(--ink-soft);font-size:.72rem;display:block}.sidebar__recent span{font-family:var(--font-display);font-weight:500;line-height:1.35;display:block}.sidebar__recent a:hover span{color:var(--trail)}.sidebar__tags{flex-wrap:wrap;gap:.4rem;display:flex}.sidebar__back{border-top:1px solid var(--line);width:100%;font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-soft);margin-top:1.9rem;padding-top:1.5rem;display:inline-block}.sidebar__back:hover{color:var(--trail)}@media (width<=52rem){.post-shell{grid-template-columns:1fr;gap:0}.sidebar{border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem;position:static}.post-shell .post{max-width:var(--measure);margin-inline:auto}}.post__head{border-bottom:1px solid var(--line);margin-bottom:2rem;padding-bottom:1.15rem}.post__title{font-family:var(--font-display);font-weight:700;font-size:var(--step-3);margin:0 0 .9rem;line-height:1.14}.post__meta{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;color:var(--ink-soft);flex-wrap:wrap;gap:.5rem 1rem;display:flex}.post__meta .sep{color:var(--line)}.post__hero{border:1px solid var(--line);margin:1.75rem 0 0}.prose{font-size:var(--step-0);line-height:1.9}.prose>*+*{margin-top:1.4rem}.prose h1,.prose h2,.prose h3{font-family:var(--font-display);margin-top:2.6rem;font-weight:600;line-height:1.3}.prose h2{font-size:var(--step-2);border-left:3px solid var(--waymark);padding-left:.9rem}.prose h3{font-size:var(--step-1);color:var(--ink-soft)}.prose a{color:var(--trail);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.prose a:hover{-webkit-text-decoration-color:var(--trail);text-decoration-color:var(--trail)}.prose img,.prose video{border:1px solid var(--line);width:100%;margin-block:1.9rem}.prose .video-embed{aspect-ratio:16/9;border:1px solid var(--line);width:100%;margin-block:1.9rem;position:relative}.prose .video-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.prose figure{margin:1.9rem 0}.prose figcaption,.prose em:only-child{font-family:var(--font-mono);letter-spacing:.03em;color:var(--ink-soft);margin-top:.5rem;font-size:.76rem;display:block}.prose blockquote{border-left:2px solid var(--olive);color:var(--ink-soft);margin:1.9rem 0;padding:.2rem 0 .2rem 1.1rem}.prose ul,.prose ol{padding-left:1.3rem}.prose li+li{margin-top:.4rem}.prose pre{background:var(--paper-sink);border:1px solid var(--line);padding:1rem 1.1rem;font-size:.88rem;line-height:1.6;overflow-x:auto}.prose :not(pre)>code{font-family:var(--font-mono);background:var(--paper-sink);padding:.1em .35em;font-size:.86em}.prose hr{border:0;border-top:1px solid var(--line);margin-block:2.5rem}.post__foot{border-top:1px solid var(--line);flex-wrap:wrap;gap:.5rem;margin-top:3rem;padding-top:1.25rem;display:flex}.post-nav{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;margin-top:2.5rem;display:grid}.post-nav__link{background:var(--paper);flex-direction:column;gap:.35rem;padding:1rem 1.1rem;transition:background .15s;display:flex}.post-nav__link:hover{background:var(--paper-sink)}.post-nav__link--next{text-align:right;align-items:flex-end}.post-nav__dir{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-soft);font-size:.72rem}.post-nav__title{font-family:var(--font-display);font-size:.98rem;font-weight:600;line-height:1.35}.related{border-top:1px solid var(--line);margin-top:3rem;padding-top:1.25rem}.related__head{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.14em;color:var(--ink-soft);margin:0 0 .9rem;font-weight:500}.related__list{margin:0;padding:0;list-style:none}.related__list li+li{margin-top:.55rem}.related__list a{align-items:baseline;gap:.85rem;display:flex}.related__list time{font-family:var(--font-mono);color:var(--ink-soft);flex-shrink:0;font-size:.76rem}.related__list a:hover span{background-image:linear-gradient(var(--trail), var(--trail));background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px}@media (width<=34rem){.post-nav{grid-template-columns:1fr}.post-nav__link--next{text-align:left;align-items:flex-start}}.skip-link{position:absolute;left:-999px}.skip-link:focus{background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:var(--step--1);z-index:10;padding:.4rem .7rem;top:.6rem;left:1rem}:focus-visible{outline:2px solid var(--trail);outline-offset:3px}@media (width<=34rem){:root{--rail:1.9rem;--rail-x:.95rem}.site-nav{width:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){.log:before{animation:none;transform:scaleY(1)}.log__node,.log__title a{transition:none}}
