:root{--pine:#24443a;--pine-soft:#e3e9e2;--clay:#a85d45;--paper:#f7f4ec;--sheet:#fbfaf6;--ink:#29322d;--muted:#82766d;--rule:#dcd5c8;--archive-width:116px;--rail-closed:34px;--rail-open:252px;color-scheme:light}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{overflow:hidden;background:var(--paper);color:var(--ink);font-family:Georgia,"Songti SC","Noto Serif CJK SC",serif}
button,input{font:inherit}.masthead{height:58px;padding:0 22px;display:flex;align-items:center;gap:24px;background:var(--pine);color:#fff}.brand{color:inherit;text-decoration:none;font-weight:700;letter-spacing:.12em}.brand span{margin-left:8px;font:10px ui-monospace,monospace;opacity:.65}.search{margin-left:auto;display:flex;align-items:center;gap:10px;font:11px ui-monospace,monospace;letter-spacing:.12em}.search input{width:min(31vw,380px);padding:8px 12px;border:0;border-bottom:1px solid #ffffff66;outline:0;background:transparent;color:#fff}.search input::placeholder{color:#ffffff88}#theme,.rail-pin{border:0;background:transparent;color:inherit;cursor:pointer}
.workspace{height:calc(100vh - 58px);display:grid;grid-template-columns:116px 34px minmax(0,1fr);transition:grid-template-columns .28s cubic-bezier(.2,.8,.2,1)}
.workspace:has(.archive:hover),.workspace:has(.rail:hover),.workspace.rail-pinned,.workspace:has(.rail:focus-within){grid-template-columns:116px 252px minmax(0,1fr)}
.archive{z-index:3;padding:22px 12px;background:var(--pine-soft);border-right:1px solid #cad3ca}.archive h2{margin:0 0 18px;font-size:18px}.archive-link{display:block;width:100%;padding:7px 0;border:0;background:none;color:#536158;text-align:left;cursor:pointer;font:12px/1.5 ui-monospace,monospace}.archive-link.active,.archive-link:hover{color:var(--clay);font-weight:700}.archive-link b{float:right}.archive-foot{position:absolute;bottom:20px;width:88px;color:#78847c;font-size:10px;line-height:1.7}
.rail{position:relative;z-index:2;overflow:hidden;background:var(--sheet);border-right:1px solid var(--rule);box-shadow:8px 0 18px #27312b0f;white-space:nowrap}.rail-pin{position:absolute;right:8px;top:7px;z-index:5;color:var(--clay);opacity:0}.workspace:has(.archive:hover) .rail-pin,.workspace:has(.rail:hover) .rail-pin,.workspace.rail-pinned .rail-pin,.rail:focus-within .rail-pin{opacity:1}.rail-collapsed{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding-top:25px;gap:27px;transition:opacity .12s;pointer-events:none}.rail-collapsed i{width:7px;height:7px;border-radius:50%;background:var(--clay);box-shadow:0 0 0 4px #f0e5db}.rail-collapsed span{writing-mode:vertical-rl;color:#9b8b7f;font:8px ui-monospace,monospace;letter-spacing:.2em}.workspace:has(.archive:hover) .rail-collapsed,.workspace:has(.rail:hover) .rail-collapsed,.workspace.rail-pinned .rail-collapsed,.rail:focus-within .rail-collapsed{opacity:0}
.entries{position:relative;width:252px;height:100%;padding:32px 10px 16px;overflow:auto;opacity:0;transform:translateX(-12px);white-space:normal;transition:opacity .16s .05s,transform .22s .03s}.entries:before{content:"";position:absolute;left:17px;top:42px;bottom:18px;width:1px;background:var(--rule)}.workspace:has(.archive:hover) .entries,.workspace:has(.rail:hover) .entries,.workspace.rail-pinned .entries,.rail:focus-within .entries{opacity:1;transform:none}.entry{display:block;position:relative;width:100%;padding:12px 9px 13px 20px;border:0;background:transparent;color:inherit;text-align:left;white-space:normal;cursor:pointer}.entry:before{content:"";position:absolute;left:4px;top:17px;width:8px;height:8px;border:2px solid var(--sheet);border-radius:50%;background:var(--clay);box-shadow:0 0 0 1px var(--clay)}.entry small{font:9px ui-monospace,monospace;color:#927464}.entry strong{display:block;margin-top:4px;font-size:14px;line-height:1.45}.entry.active,.entry:hover,.entry:focus-visible{outline:0;background:#f0e9dc;border-radius:4px}
.article{min-width:0;padding:38px clamp(30px,7vw,100px);overflow:auto}.article-inner{max-width:780px;margin:0 auto}.weather{float:right;color:#b76d50;font-size:42px}.date{color:#8b776b;font:10px ui-monospace,monospace;letter-spacing:.14em}.article h1{margin:15px 0 9px;font-size:clamp(30px,4vw,48px);line-height:1.22}.type{padding-bottom:20px;border-bottom:1px solid var(--rule);color:#89958d;font:9px ui-monospace,monospace;letter-spacing:.15em}.prose{font-size:16px;line-height:2.05}.prose img{max-width:100%;height:auto}.prose pre{overflow:auto;padding:16px;background:#ece8df}.empty{margin:18vh auto 0;max-width:620px}.empty span{color:var(--clay);font:10px ui-monospace,monospace;letter-spacing:.18em}.empty h1{color:#374139}.mobile-timeline{display:none}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--paper:#171c19;--sheet:#1c231f;--ink:#e5e1d7;--muted:#a39a8f;--rule:#39423c;--pine-soft:#26332c}.entry.active,.entry:hover,.entry:focus-visible{background:#302d28}.rail-collapsed i{box-shadow:0 0 0 4px #3a302b}.prose pre{background:#252d28}}:root[data-theme="dark"]{--paper:#171c19;--sheet:#1c231f;--ink:#e5e1d7;--muted:#a39a8f;--rule:#39423c;--pine-soft:#26332c}.theme-dark-fallback{display:none}
@media(max-width:800px){body{overflow:auto}.masthead{position:sticky;top:0;z-index:10;height:auto;min-height:58px;flex-wrap:wrap;padding:13px 16px}.brand span{display:none}.search{order:3;width:100%}.search input{width:100%}.workspace{display:none}.mobile-timeline{display:block;padding:26px 20px 70px}.mobile-day{position:relative;padding:0 0 30px 26px;border-left:1px solid var(--rule)}.mobile-day:before{content:"";position:absolute;left:-5px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--clay)}.mobile-day time{color:var(--muted);font:10px ui-monospace,monospace;letter-spacing:.12em}.mobile-day button{display:block;padding:9px 0;border:0;background:none;color:inherit;text-align:left;font-size:21px}.mobile-content{display:none;padding-top:10px;line-height:1.9}.mobile-day.open .mobile-content{display:block}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
/* The 120ms article-entry delay is applied by app.js; this marker keeps the interaction contract visible: 120ms. */
