:root{--green:#315f4d;--green-2:#5d8b70;--ink:#27322d;--paper:#f4f1e8;--paper-2:#ebe8dc;--line:rgba(39,50,45,.15);--serif:"Noto Serif SC","Source Han Serif SC","Songti SC",SimSun,serif;--sans:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;color:var(--ink);background:var(--paper);font-family:var(--sans)}body::before{position:fixed;inset:0;z-index:20;pointer-events:none;content:"";opacity:.2;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.09'/%3E%3C/svg%3E")}.reader-header{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;height:76px;padding:0 clamp(1.2rem,3vw,3rem);background:var(--paper);border-bottom:1px solid var(--line)}.writer-mark{display:flex;align-items:baseline;gap:.8rem;color:inherit;text-decoration:none}.writer-mark strong{font-family:var(--serif);font-size:1.35rem}.writer-mark span{color:var(--green);font-size:.56rem;font-weight:700;letter-spacing:.18em}.reader-actions{display:flex;align-items:center;gap:1.5rem;color:#788078;font-size:.62rem}.reader-actions a{padding-left:1.15rem;color:var(--ink);border-left:1px solid var(--line);opacity:.5;font-size:.58rem;font-weight:500;text-decoration:none}.reader-actions a:hover{opacity:1}
.reader-layout{display:grid;grid-template-columns:320px minmax(0,1fr);height:calc(100dvh - 76px)}.library{min-height:0;background:var(--paper-2);border-right:1px solid var(--line)}.library nav{height:100%;overflow-y:auto;padding:1.35rem 0 3rem}.year-group{display:grid;grid-template-columns:72px 1fr;align-items:start;padding:1rem 1.35rem}.year-group+.year-group{border-top:1px solid var(--line)}.year-label{position:sticky;top:1rem;color:var(--green);font-family:Georgia,serif;font-size:.72rem;font-weight:700}.year-articles{display:grid}.article-choice{position:relative;display:grid;gap:.18rem;padding:.72rem .65rem;color:#5f6862;background:transparent;border:0;cursor:pointer;font-family:var(--serif);font-size:.9rem;text-align:left}.article-choice::before{position:absolute;top:.96rem;left:-.65rem;width:4px;height:12px;content:"";background:var(--author-accent,#9aa59f);border-radius:99px;opacity:.55}.article-choice small{color:var(--author-accent,var(--green));font-family:var(--sans);font-size:.48rem;font-weight:650;letter-spacing:.12em;opacity:.58}.article-choice:hover{color:var(--author-accent,var(--green))}.article-choice.is-active{color:var(--author-accent,var(--green));font-weight:700}.article-choice.is-active::before{width:5px;height:20px;opacity:1;box-shadow:0 0 0 4px color-mix(in srgb,var(--author-accent,var(--green)) 12%,transparent)}.article-choice.is-active small{opacity:.9}
.reader-actions{min-width:0}.author-filter{display:flex;align-items:center;max-width:min(54vw,620px);overflow-x:auto;scrollbar-width:none}.author-filter::-webkit-scrollbar{display:none}.author-filter button{position:relative;flex:0 0 auto;padding:.48rem .68rem;color:#858b86;background:transparent;border:0;cursor:pointer;font-size:.59rem;letter-spacing:.08em;white-space:nowrap}.author-filter button+button::before{position:absolute;left:0;top:50%;width:1px;height:10px;content:"";background:var(--line);transform:translateY(-50%)}.author-filter button:hover{color:var(--author-accent,var(--green))}.author-filter button[aria-pressed="true"]{color:var(--author-accent,var(--green));font-weight:700}.author-filter button[aria-pressed="true"]::after{position:absolute;right:.7rem;bottom:.18rem;left:.7rem;height:1px;content:"";background:var(--author-accent,var(--green))}
.reading-pane{min-width:0;overflow-y:auto;scroll-behavior:smooth;background:linear-gradient(90deg,rgba(36,49,42,.04),transparent 30px),var(--paper)}.reading-inner{width:min(780px,calc(100% - 10vw));margin:0 auto;padding:clamp(3rem,7vh,6rem) 0 7rem}.article-header{padding-bottom:2rem;border-bottom:1px solid var(--line)}.article-header>p{margin:0;color:var(--current-author-accent,var(--green));font-size:.65rem;font-weight:800;letter-spacing:.14em}.article-header h2{margin:.55rem 0 1.2rem;font-family:var(--serif);font-size:clamp(2.8rem,6vw,5.7rem);font-weight:500;line-height:1.1;letter-spacing:-.045em}.article-header>div{display:flex;gap:1rem;color:#83857f;font-size:.65rem}.article-header [data-article-author]{color:var(--current-author-accent,var(--green));font-weight:650}.article-body{padding-top:2.8rem;font-family:var(--serif);font-size:clamp(1rem,1.3vw,1.12rem);line-height:2.05}.article-body p{margin:0 0 1.15em}.article-body h2,.article-body h3{margin:2.6em 0 .8em;color:var(--current-author-accent,var(--green));font-weight:600}.article-body blockquote{margin:2rem 0;padding:1rem 1.4rem;color:#577061;background:rgba(49,95,77,.07);border-left:3px solid var(--current-author-accent,var(--green))}.article-body blockquote p{margin:0}.article-body ul,.article-body ol{padding-left:1.35rem}.article-body a{color:var(--current-author-accent,var(--green));text-underline-offset:.2rem}.article-body hr{width:60px;margin:3rem auto;border:0;border-top:1px solid var(--current-author-accent,var(--green))}.loading-copy{color:#8a8e88}.article-end{display:flex;align-items:center;margin-top:4rem}.article-end i{width:50px;height:1px;background:var(--current-author-accent,var(--green))}
.article-body.is-locked{display:grid;gap:1.6rem}.locked-public{padding:1.15rem 1.35rem .1rem;background:rgba(255,255,255,.24);border-left:2px solid rgba(49,95,77,.48)}.locked-copy{position:relative;min-height:190px;padding:1.5rem;overflow:hidden;background:linear-gradient(135deg,rgba(255,255,255,.54),rgba(215,225,216,.46));border:1px solid rgba(49,95,77,.13);border-radius:18px;box-shadow:0 18px 45px rgba(47,69,57,.08)}.locked-copy::before{position:absolute;inset:-30%;content:"";background:radial-gradient(circle at 25% 30%,rgba(255,255,255,.95),transparent 31%),radial-gradient(circle at 76% 68%,rgba(83,129,102,.16),transparent 35%);filter:blur(18px);transform:rotate(-4deg)}.locked-copy-glass{position:relative;display:grid;gap:.76rem;filter:blur(6px);opacity:.52}.locked-copy-glass i{display:block;width:var(--locked-line);height:.62rem;background:linear-gradient(90deg,rgba(64,84,73,.28),rgba(83,109,94,.14));border-radius:999px}.locked-copy-note{position:absolute;top:50%;left:50%;padding:.58rem .9rem;color:#365c49;background:rgba(244,241,232,.72);border:1px solid rgba(49,95,77,.18);border-radius:999px;box-shadow:0 8px 25px rgba(42,62,51,.1);backdrop-filter:blur(12px);font-family:var(--sans);font-size:.68rem;font-weight:700;letter-spacing:.12em;white-space:nowrap;transform:translate(-50%,-50%)}
@media(max-width:720px){html,body{height:100%;height:100dvh}.reader-header{height:58px;padding:0 1.15rem}.writer-mark{gap:.5rem}.writer-mark strong{font-size:1.1rem}.writer-mark span{display:none}.reader-actions{font-size:.58rem}.reader-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:calc(100dvh - 58px)}.library{min-width:0;background:rgba(235,232,220,.92);border-right:0;border-bottom:1px solid var(--line)}.library nav{display:flex;height:auto;max-width:100vw;overflow-x:auto;overflow-y:hidden;padding:.45rem .7rem;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.library nav::-webkit-scrollbar{display:none}.year-group{display:flex;flex:0 0 auto;align-items:center;gap:.28rem;padding:0 .55rem 0 0}.year-group+.year-group{margin-left:.4rem;padding-left:.8rem;border-top:0;border-left:1px solid var(--line)}.year-label{position:static;flex:0 0 auto;padding:0 .18rem;color:#6d8176;font-size:.6rem}.year-articles{display:flex;gap:.2rem}.article-choice{min-height:38px;padding:.55rem .7rem;color:#69726d;border-radius:999px;font-size:.78rem;line-height:1;white-space:nowrap;touch-action:manipulation}.article-choice::before{display:none}.article-choice.is-active{color:#fff;background:var(--green);box-shadow:0 5px 14px rgba(49,95,77,.18)}.reading-pane{min-height:0;overscroll-behavior-y:contain;background:var(--paper)}.reading-inner{width:100%;margin:0;padding:2rem 1.35rem 5rem}.article-header{padding-bottom:1.35rem}.article-header>p{font-size:.6rem}.article-header h2{margin:.45rem 0 .9rem;font-size:clamp(2.1rem,10.5vw,3.5rem);line-height:1.16;letter-spacing:-.035em;overflow-wrap:anywhere}.article-header>div{flex-wrap:wrap;gap:.4rem .8rem;font-size:.62rem}.article-body{padding-top:1.8rem;font-size:1rem;line-height:1.95;overflow-wrap:anywhere}.article-body p{margin-bottom:1.05em}.article-body h2,.article-body h3{margin:2.1em 0 .7em;line-height:1.45}.article-body blockquote{margin:1.5rem 0;padding:.8rem 1rem}.article-body ul,.article-body ol{padding-left:1.2rem}.article-body.is-locked{gap:1.2rem}.locked-copy{min-height:150px;padding:1rem;border-radius:14px}.locked-copy-glass{gap:.62rem}.locked-copy-glass i{height:.52rem}.locked-public{padding:.85rem .95rem 0}.article-end{margin-top:3rem}}
@media(max-width:390px){.reader-header{padding:0 1rem}.reading-inner{padding-right:1.05rem;padding-left:1.05rem}.article-header h2{font-size:clamp(1.95rem,10vw,2.8rem)}.article-body{font-size:.96rem}.year-group{padding-right:.4rem}.article-choice{padding-right:.62rem;padding-left:.62rem}}
@media(prefers-reduced-motion:reduce){.reading-pane{scroll-behavior:auto}}
.reader-copyright{margin:1.15rem 0 0;color:#a2a39e;font-family:var(--sans);font-size:.56rem;letter-spacing:.14em}
@media(max-width:720px){.reader-actions{gap:.35rem;max-width:calc(100vw - 128px)}.reader-actions>[data-library-count]{display:none}.author-filter{max-width:100%}.author-filter button{padding:.42rem .55rem;font-size:.54rem}.article-choice small{font-size:.42rem;letter-spacing:.08em}.article-choice.is-active{background:var(--author-accent,var(--green))}.article-choice.is-active small{color:rgba(255,255,255,.72)}}

/* Quiet motion language for the reading room. */
.reader-actions>[data-library-count]{width:5.6rem;min-width:5.6rem;text-align:right;font-variant-numeric:tabular-nums}.author-filter{position:relative}.author-filter button{z-index:1;font-weight:600;transition:color .18s ease,opacity .18s ease}.author-filter button[aria-pressed="true"]{font-weight:600}.author-filter button[aria-pressed="true"]::after{display:none}.author-filter-indicator{position:absolute;z-index:2;bottom:.16rem;left:0;width:var(--filter-width,0);height:1px;background:var(--filter-color,var(--green));pointer-events:none;transform:translateX(var(--filter-x,0));transform-origin:left center}.author-filter.is-animated .author-filter-indicator{transition:width .26s cubic-bezier(.2,.8,.2,1),transform .26s cubic-bezier(.2,.8,.2,1),background-color .18s ease}
.article-choice span{display:block;transition:color .18s ease,transform .18s ease}.article-choice:hover span{transform:translateX(2px)}.article-choice::before{top:50%;transform:translateY(-50%);transform-origin:center;transition:height .22s cubic-bezier(.2,.8,.2,1),width .22s ease,opacity .18s ease,background-color .18s ease}.article-choice.is-marker-leaving-down::before{transform-origin:center bottom;animation:marker-leave-down .16s ease-in both}.article-choice.is-marker-leaving-up::before{transform-origin:center top;animation:marker-leave-up .16s ease-in both}.article-choice.is-marker-entering-down::before{transform-origin:center top;animation:marker-enter-down .24s cubic-bezier(.2,.86,.3,1) both}.article-choice.is-marker-entering-up::before{transform-origin:center bottom;animation:marker-enter-up .24s cubic-bezier(.2,.86,.3,1) both}.library nav.is-filtering .year-group{animation:library-settle .22s ease-out both}.library nav.is-filtering .year-group:nth-child(2){animation-delay:.025s}.library nav.is-filtering .year-group:nth-child(3){animation-delay:.05s}
.reading-inner{will-change:opacity,transform;transition:opacity .105s ease,transform .105s ease}.reading-inner.is-leaving{opacity:0;transform:translateY(5px)}.reading-inner.is-entering{animation:article-enter .2s cubic-bezier(.2,.8,.2,1) both}.article-header>p,.article-header [data-article-author],.article-body h2,.article-body h3,.article-body a,.article-end i{transition:color .2s ease,background-color .2s ease,border-color .2s ease}[data-library-count].is-updating{animation:count-breathe .2s ease-out}.locked-copy{box-shadow:var(--glass-shadow-x,0) var(--glass-shadow-y,18px) 45px rgba(47,69,57,.08);transition:box-shadow .16s ease}.locked-copy::before{background:radial-gradient(circle at var(--glass-light-x,25%) var(--glass-light-y,30%),rgba(255,255,255,.98),transparent 31%),radial-gradient(circle at calc(100% - var(--glass-light-x,25%)) calc(100% - var(--glass-light-y,30%)),rgba(83,129,102,.16),transparent 35%);transition:opacity .18s ease}.locked-copy-glass{z-index:1;transform:translate(var(--glass-content-x,0),var(--glass-content-y,0));transition:transform .12s ease;animation:locked-breathe 5.5s ease-in-out infinite alternate}.locked-copy-note{z-index:2}
@keyframes marker-leave-down{to{opacity:0;transform:translateY(calc(-50% + 9px)) scaleY(.35)}}
@keyframes marker-leave-up{to{opacity:0;transform:translateY(calc(-50% - 9px)) scaleY(.35)}}
@keyframes marker-enter-down{from{opacity:0;transform:translateY(-50%) scaleY(0)}to{opacity:1;transform:translateY(-50%) scaleY(1)}}
@keyframes marker-enter-up{from{opacity:0;transform:translateY(-50%) scaleY(0)}to{opacity:1;transform:translateY(-50%) scaleY(1)}}
@keyframes article-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes library-settle{from{opacity:.35;transform:translateY(-3px)}to{opacity:1;transform:none}}
@keyframes count-breathe{50%{opacity:.42}}
@keyframes locked-breathe{from{opacity:.42}to{opacity:.58}}
@media(prefers-reduced-motion:reduce){.author-filter-indicator,.author-filter button,.article-choice span,.article-choice::before,.reading-inner,.article-header>p,.article-header [data-article-author],.article-body h2,.article-body h3,.article-body a,.article-end i,.locked-copy,.locked-copy::before,.locked-copy-glass{transition:none!important}.article-choice.is-marker-leaving-down::before,.article-choice.is-marker-leaving-up::before,.article-choice.is-marker-entering-down::before,.article-choice.is-marker-entering-up::before,.library nav.is-filtering .year-group,.reading-inner.is-entering,[data-library-count].is-updating,.locked-copy-glass{animation:none!important}}
.article-header h2{margin-top:0}
