:root{--color-surface:#f5f1e9;--color-surface-raised:#efe8da;--color-text:#22201e;--color-text-secondary:#6f6a62;--color-label:#6c6157;--color-accent:#714656;--color-accent-soft:rgba(113,70,86,0.06);--color-on-accent:#f5f1e9;--color-aux:#cabda4;--color-line:#e4ddce;--text-eyebrow:0.78rem;--text-base:clamp(1rem,0.92rem + 0.4vw,1.125rem);--text-hero:clamp(2.25rem,1.2rem + 4.2vw,4rem);--space-section:clamp(4.5rem,3rem + 6vw,11rem);--content-width:38rem;--radius:3px;--tracking-eyebrow:0.26em;--duration-normal:320ms;--ease-out-expo:cubic-bezier(0.16,1,0.3,1)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{background:var(--color-surface);color:var(--color-text);font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:var(--text-base);line-height:1.85}h1,h2,h3{font-weight:500;letter-spacing:.01em}h1{line-height:1.32}.markdown-body>*{margin-bottom:1rem}.markdown-body h2{margin-top:2.2rem;font-size:1.35rem}.markdown-body h3{margin-top:1.6rem;font-size:1.15rem}.markdown-body blockquote{padding-left:1rem;border-left:2px solid var(--color-accent);color:var(--color-text-secondary)}.markdown-body ul{padding-left:1.5rem}.markdown-body code{padding:.1em .3em;background:var(--color-surface-raised)}a{transition:color var(--duration-normal) var(--ease-out-expo),opacity var(--duration-normal) var(--ease-out-expo)}a:hover{opacity:.7}::selection{background:var(--color-accent-soft);color:var(--color-text)}:focus-visible{outline:1px solid var(--color-accent);outline-offset:2px}.header-nav{display:flex}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:50;align-items:stretch;background:color-mix(in srgb,var(--color-surface) 88%,transparent);-webkit-backdrop-filter:saturate(120%) blur(12px);backdrop-filter:saturate(120%) blur(12px);border-top:1px solid var(--color-line);padding:.3rem .5rem calc(.3rem + env(safe-area-inset-bottom))}@media (max-width:767px){.header-nav{display:none}.bottom-nav{display:flex}.app-shell{padding-bottom:calc(4rem + env(safe-area-inset-bottom))}}.reader{background:var(--color-surface);color:var(--color-text);min-height:100vh}.reader[data-reader-theme=sepia]{--color-surface:#ece0cb;--color-surface-raised:#e3d4ba;--color-text:#4a3f31;--color-text-secondary:#6f6151;--color-label:#7a6b58;--color-line:#dccbaf;--color-accent-soft:rgba(113,70,86,0.08)}.reader[data-reader-theme=night]{--color-surface:#181614;--color-surface-raised:#221f1c;--color-text:#cbc4b8;--color-text-secondary:#938b7e;--color-label:#8a8073;--color-line:#322d28;--color-accent:#b07c8c;--color-accent-soft:rgba(176,124,140,0.12);--color-on-accent:#181614}.reader-bar{position:-webkit-sticky;position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:.75rem;height:3rem;padding:0 .9rem;background:color-mix(in srgb,var(--color-surface) 90%,transparent);-webkit-backdrop-filter:saturate(120%) blur(10px);backdrop-filter:saturate(120%) blur(10px);border-bottom:1px solid var(--color-line)}.reader-bar-title{flex:1 1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;letter-spacing:.04em;color:var(--color-text-secondary);text-align:center}.reader-bar-actions{display:flex;gap:.25rem}.reader-bar-btn{min-height:44px;min-width:44px;padding:0 .6rem;background:transparent;border:none;color:var(--color-text);font:inherit;font-size:.9rem;letter-spacing:.04em;cursor:pointer}.reader-bar-btn:hover{color:var(--color-accent)}.reader-progress{position:absolute;left:0;bottom:-1px;height:2px;background:var(--color-accent);transition:width .16s linear}.reader-page-hint{position:fixed;left:50%;bottom:2rem;z-index:80;width:min(34rem,calc(100% - 2rem));transform:translateX(-50%);padding:1rem 1.15rem;border:1px solid var(--color-line);border-radius:4px;background:color-mix(in srgb,var(--color-surface-raised) 96%,transparent);box-shadow:0 12px 38px rgba(48,36,28,.12);text-align:center}.reader-page-hint-title{margin:0 0 .65rem;font-weight:600}.reader-page-hint-ways{display:flex;justify-content:center;gap:.55rem 1.25rem;flex-wrap:wrap;color:var(--color-text-secondary);font-size:.85rem}.reader-page-hint button{margin-top:.85rem;padding:.4rem 1rem;border:1px solid var(--color-aux);background:transparent;color:var(--color-text);cursor:pointer}.reader-settings{position:-webkit-sticky;position:sticky;top:3rem;z-index:39;display:flex;flex-direction:column;gap:.9rem;padding:1.1rem 1.25rem;background:var(--color-surface-raised);border-bottom:1px solid var(--color-line)}.reader-set-row{display:flex;align-items:center;gap:1rem}.reader-set-label{width:2.5rem;flex:none;font-size:.8rem;color:var(--color-label);letter-spacing:.1em}.reader-set-group{display:flex;gap:.5rem;flex-wrap:wrap}.reader-chip{min-height:38px;padding:0 .95rem;background:transparent;border:1px solid var(--color-line);border-radius:var(--radius);color:var(--color-text);font:inherit;font-size:.85rem;cursor:pointer;transition:border-color var(--duration-normal) var(--ease-out-expo),color var(--duration-normal) var(--ease-out-expo)}.reader-chip.is-on{border-color:var(--color-accent);color:var(--color-accent)}.reader-scrim{position:fixed;inset:0;z-index:44;background:rgba(0,0,0,.32)}.reader-toc{position:fixed;top:0;right:0;z-index:45;width:min(82vw,22rem);height:100dvh;overflow-y:auto;padding:1.5rem 1.25rem calc(2rem + env(safe-area-inset-bottom));background:var(--color-surface);border-left:1px solid var(--color-line)}.reader-toc-head{font-size:.78rem;letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-label);margin-bottom:1.1rem}.reader-toc-list{list-style:none;display:flex;flex-direction:column}.reader-toc-item{display:flex;align-items:baseline;gap:.6rem;width:100%;min-height:44px;padding:.55rem 0;background:transparent;border:none;border-bottom:1px solid var(--color-line);color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.reader-toc-item.is-current .reader-toc-label,.reader-toc-item.is-current .reader-toc-name{color:var(--color-accent)}.reader-toc-item.is-locked{cursor:default;color:var(--color-text-secondary)}.reader-toc-label{flex:none;font-size:.8rem;letter-spacing:.08em;color:var(--color-label)}.reader-toc-name{flex:1 1;min-width:0;font-size:.95rem}.reader-toc-lock{flex:none;font-size:.72rem;color:var(--color-label)}.reader-main{max-width:34rem;margin:0 auto;padding:2.5rem 1.25rem 4rem}.reader-cover{margin-bottom:3rem;padding-bottom:1.75rem;border-bottom:1px solid var(--color-line)}.reader-cover-title{font-size:clamp(1.7rem,1.2rem + 2vw,2.2rem);font-weight:600;letter-spacing:0;line-height:1.3}.reader-cover-author{margin-top:.6rem;color:var(--color-text-secondary);font-size:.95rem}.reader-chap{margin-bottom:3.25rem}.reader-chap-head{margin-bottom:1.75rem;scroll-margin-top:3.5rem}.reader-chap-eyebrow{font-size:.74rem;letter-spacing:.24em;color:var(--color-label);margin-bottom:.5rem}.reader-chap-title{font-size:clamp(1.4rem,1.1rem + 1.4vw,1.7rem);font-weight:600;letter-spacing:0;line-height:1.35}.reader-body p{font-size:var(--r-fs,1.0625rem);line-height:var(--r-lh,1.8);text-indent:2em;margin:0 0 .35em;text-align:justify;text-justify:inter-character}.reader-watermark{position:fixed;inset:-12vh -10vw;z-index:3;display:grid;grid-template-columns:repeat(4,minmax(12rem,1fr));align-content:space-around;grid-gap:5rem 3rem;gap:5rem 3rem;pointer-events:none;overflow:hidden;color:currentColor;opacity:.045;transform:rotate(-18deg);-webkit-user-select:none;-moz-user-select:none;user-select:none}.reader-watermark span{white-space:nowrap;font-size:.72rem;letter-spacing:.12em}@media print{.reader-watermark{opacity:.12}}.reader-body p.first{text-indent:0}@media (max-width:767px){.reader-main{padding:2rem 1.15rem 4rem}}.reader[data-reader-mode=page]{height:100dvh;overflow:hidden}.reader-pager-viewport{width:100%;max-width:38rem;height:calc(100dvh - 3rem);margin:0 auto;overflow:hidden;position:relative;touch-action:manipulation;cursor:pointer}.reader-pager-track{height:100%;box-sizing:border-box;padding:var(--pg-top,8px) var(--pg-pad,24px);column-width:var(--pg-colw,100%);column-gap:var(--pg-gap,48px);column-fill:auto;will-change:transform;transition:transform var(--duration-normal) var(--ease-out-expo)}.reader-pager-track .reader-chap-head,.reader-pager-track .reader-cover{page-break-inside:avoid;break-inside:avoid}.reader-pager-track .reader-body p{orphans:2;widows:2}.reader-pager-track .reader-chap{margin-bottom:2.25rem}.reader-pager-foot{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom));text-align:center;font-size:.72rem;letter-spacing:.06em;color:var(--color-label);background:linear-gradient(to top,var(--color-surface) 40%,transparent);pointer-events:none;transition:opacity var(--duration-normal) var(--ease-out-expo)}.reader-bar.is-hidden{transform:translateY(-100%);opacity:0;transition:transform var(--duration-normal) var(--ease-out-expo),opacity var(--duration-normal) var(--ease-out-expo)}.reader-pager-foot.is-hidden{opacity:0}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.admin-header{border-bottom:1px solid var(--color-line);background:rgba(247,243,236,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:-webkit-sticky;position:sticky;top:0;z-index:40;font-family:Noto Sans SC,PingFang SC,sans-serif}.admin-header-inner{width:min(100% - 2rem,68rem);min-height:64px;margin:0 auto;display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:2rem;gap:2rem}.admin-brand{color:var(--color-text);text-decoration:none;font-family:Songti SC,serif;font-size:1.05rem;letter-spacing:.1em;white-space:nowrap}.admin-brand span{margin-left:.35rem;color:var(--color-text-secondary);font-family:sans-serif;font-size:.72rem;letter-spacing:.08em}.admin-nav{display:flex;align-self:stretch;gap:1.4rem;overflow-x:auto}.admin-nav a{display:inline-flex;align-items:center;flex:none;color:var(--color-text-secondary);text-decoration:none;font-size:.86rem;border-bottom:2px solid transparent}.admin-nav a[aria-current=page]{color:var(--color-accent);border-bottom-color:var(--color-accent)}.admin-account{position:relative;font-size:.8rem;color:var(--color-text-secondary)}.admin-account summary{cursor:pointer;list-style:none;padding:.45rem .65rem;border:1px solid var(--color-line);border-radius:3px}.admin-account summary::-webkit-details-marker{display:none}.admin-account>div{position:absolute;right:0;top:calc(100% + .5rem);min-width:13rem;padding:.8rem;display:grid;grid-gap:.6rem;gap:.6rem;background:var(--color-surface);border:1px solid var(--color-line);box-shadow:0 12px 30px rgba(45,37,31,.08)}.admin-account a{color:var(--color-accent);text-decoration:none}.admin-shell{min-height:100dvh;background:#f7f3ec}.admin-page{width:min(100% - 2rem,68rem);margin:0 auto;padding:3.25rem 0 5rem;font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}.admin-page--narrow{max-width:48rem}.admin-page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2rem}.admin-title{margin:0;font-family:Songti SC,"Noto Serif SC",Georgia,serif;font-size:clamp(2rem,3vw,2.7rem);font-weight:500;line-height:1.2}.admin-subtitle{margin-top:.45rem;color:var(--color-text-secondary);font-size:.9rem}.admin-section{margin-top:2rem}.admin-card{padding:1.25rem 1.4rem;border:1px solid var(--color-line);background:rgba(255,255,255,.28);border-radius:4px}.admin-empty{padding:3.5rem 1.5rem;border:1px dashed var(--color-aux);color:var(--color-text-secondary);text-align:center;background:rgba(255,255,255,.18)}.admin-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin:1.25rem 0}.admin-page input:not([type=checkbox]):not([type=radio]):not([type=file]),.admin-page select,.admin-page textarea{min-height:42px;padding:.65rem .8rem;border:1px solid #c9bda9;border-radius:3px;background:rgba(255,255,255,.42);color:var(--color-text);font:inherit;font-size:.9rem;transition:border-color .2s,box-shadow .2s,background .2s}.admin-page input:focus,.admin-page select:focus,.admin-page textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);background:rgba(255,255,255,.7);outline:none}.admin-page input[type=checkbox]{width:17px;height:17px;accent-color:var(--color-accent);vertical-align:middle}.admin-button,.admin-page button{min-height:40px;padding:.55rem 1rem;border:1px solid var(--color-aux);border-radius:3px;background:transparent;color:var(--color-text);font:inherit;font-size:.86rem;cursor:pointer;text-decoration:none;transition:opacity .2s,background .2s,border-color .2s}.admin-button:hover,.admin-page button:hover{opacity:.82}.admin-button:disabled,.admin-page button:disabled{opacity:.42;cursor:not-allowed}.admin-button--secondary,.admin-page button.admin-button--secondary{border-color:var(--color-aux);background:transparent;color:var(--color-text)}.admin-button--danger,.admin-page button.admin-button--danger{border-color:#a94b42;background:transparent;color:#963e36}.admin-button:not(.admin-button--secondary):not(.admin-button--danger){border-color:var(--color-accent);background:var(--color-accent);color:var(--color-on-accent)}.admin-link{color:var(--color-accent);text-decoration:none;border-bottom:1px solid transparent}.admin-link:hover{border-bottom-color:currentColor;opacity:1}.admin-tabs{display:flex;gap:1.5rem;overflow-x:auto;margin:1.5rem 0;border-bottom:1px solid var(--color-line)}.admin-tab{flex:none;padding:.65rem 0;color:var(--color-text-secondary);text-decoration:none;border-bottom:2px solid transparent;font-size:.9rem}.admin-tab[aria-current=page]{color:var(--color-accent);border-bottom-color:var(--color-accent)}.admin-page button.admin-tab{min-height:auto;padding:.65rem 0;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--color-text-secondary)}.admin-page button.admin-tab[aria-current=page]{color:var(--color-accent);border-bottom-color:var(--color-accent)}.admin-list{border-top:1px solid var(--color-line)}.admin-list-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:1rem;gap:1rem;align-items:center;padding:1.1rem .25rem;border-bottom:1px solid var(--color-line)}.admin-list-title{font-family:Songti SC,"Noto Serif SC",serif;font-size:1.05rem;font-weight:600}.admin-meta{color:var(--color-text-secondary);font-size:.8rem}.admin-actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.admin-badge{display:inline-flex;align-items:center;min-height:25px;padding:0 .55rem;border:1px solid var(--color-aux);border-radius:999px;color:var(--color-text-secondary);font-size:.75rem}.admin-badge--accent{border-color:var(--color-accent);color:var(--color-accent)}.admin-table-wrap{overflow-x:auto;border-top:1px solid var(--color-line)}.admin-page table{width:100%;border-collapse:collapse}.admin-page th{padding:.75rem .6rem;color:var(--color-text-secondary);font-size:.76rem;font-weight:500;text-align:left}.admin-page td,.admin-page th{border-bottom:1px solid var(--color-line)}.admin-page td{padding:1rem .6rem;font-size:.88rem;vertical-align:top}.admin-danger-zone{margin-top:2.5rem;padding:1.25rem;border:1px solid rgba(169,75,66,.35);background:rgba(169,75,66,.035)}.admin-upload-drop{min-height:13rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;padding:2rem;border:1px dashed var(--color-aux);border-radius:4px;background:rgba(255,255,255,.2);text-align:center;cursor:pointer;transition:border-color .2s,background .2s}.admin-upload-drop:focus-visible,.admin-upload-drop:hover{border-color:var(--color-accent);background:var(--color-accent-soft);outline:none}.admin-upload-icon{display:grid;place-items:center;width:2.5rem;height:2.5rem;margin-bottom:.35rem;border:1px solid var(--color-aux);border-radius:50%;color:var(--color-accent);font-size:1.25rem}.admin-path-row{grid-template-columns:minmax(0,1fr) auto;align-items:center}.admin-path-actions{flex-wrap:nowrap;min-width:max-content}.admin-path-actions .admin-button{min-width:4.5rem;white-space:nowrap;text-align:center}@media (max-width:720px){.admin-header-inner{width:min(100% - 1.5rem,68rem);grid-template-columns:auto 1fr;gap:1rem}.admin-nav{grid-row:2;grid-column:1/-1;order:3;min-height:42px}.admin-account{justify-self:end}.admin-page{width:min(100% - 1.5rem,68rem);padding-top:2rem}.admin-page-head{align-items:flex-start;flex-direction:column}.admin-list-row{grid-template-columns:auto minmax(0,1fr)}.admin-list-row>.admin-actions{grid-column:2}.admin-page table{display:block;overflow-x:auto;white-space:nowrap}}