@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;700&display=swap";:root{font-family:"Noto Serif SC",Songti SC,STSong,serif;color:#4a2e1a;line-height:1.7;font-weight:400}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(150deg,#fdf6ee,#faebd7 40%,#f8e0ce)}a{color:#b85c38;text-decoration:none}p,h1,h2,h3{margin:0}.app-shell{width:min(960px,calc(100vw - 24px));margin:0 auto;padding:20px 0 60px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px;padding:16px 22px;background:#fffaf3;border:2px solid #e8c89a;border-radius:20px;box-shadow:0 3px #ddb882,0 6px 20px #b46e2814}.topbar-text{min-width:0;flex:1}.topbar h1{font-size:clamp(1.4rem,3.5vw,2.2rem);font-weight:700;color:#7a2e0e;letter-spacing:.08em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar p{margin-top:4px;color:#b07848;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-link,button{font-family:inherit;flex-shrink:0;display:inline-block;padding:8px 18px;border-radius:999px;font-size:.9rem;background:linear-gradient(135deg,#fef0dc,#fad9b0);border:2px solid #e0a060;color:#7a2e0e;box-shadow:0 3px #d4904a;transition:transform .12s,box-shadow .12s;cursor:pointer;white-space:nowrap}.home-link:hover,button:hover{transform:translateY(-2px);box-shadow:0 5px #d4904a}.home-link:active,button:active{transform:translateY(1px);box-shadow:0 1px #d4904a}.main-content{display:grid;gap:16px}.novel-list{display:flex;flex-direction:column;gap:20px}.novel-card{padding:22px 24px;background:#fffaf3;border:2px solid #e8c89a;border-radius:22px;box-shadow:0 3px #ddb882,0 6px 24px #b46e2814;display:flex;flex-direction:column;gap:18px}.novel-card-info{display:flex;gap:18px;align-items:flex-start}.novel-cover-placeholder{flex-shrink:0;width:80px;height:108px;background:linear-gradient(160deg,#fde8c0,#f8d09a);border:2px solid #e8c89a;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:2.2rem}.novel-cover{flex-shrink:0;width:80px;height:108px;object-fit:cover;border-radius:12px;border:2px solid #e8c89a}.novel-meta-block{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.novel-meta-block h2{font-size:1.15rem;color:#6b2000;line-height:1.4}.meta{color:#b07848;font-size:.85rem}.novel-desc{color:#7a5540;font-size:.88rem;line-height:1.6}.novel-tags{display:flex;flex-wrap:wrap;gap:6px}.tag{padding:3px 10px;border-radius:999px;background:linear-gradient(135deg,#fef0dc,#fad9b0);border:1.5px solid #e8c89a;color:#8b3a1f;font-size:.78rem}.chapter-count{color:#b07848;font-size:.82rem;margin-top:2px}.chapter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding-top:14px;border-top:2px dashed #f0d0a0}.chapter-item{display:block;padding:9px 12px;border-radius:12px;background:linear-gradient(135deg,#fef5e4,#fae8c8);border:1.5px solid #e8c89a;color:#7a2e0e;font-size:.86rem;line-height:1.5;word-break:break-all;transition:transform .12s,background .12s}.chapter-item:hover{transform:translateY(-2px);background:linear-gradient(135deg,#fde8c0,#f8d09a)}.reader-layout{display:flex;gap:0;align-items:flex-start;min-height:calc(100vh - 120px);position:relative}.toc-sidebar{width:260px;flex-shrink:0;background:#fffaf3;border:2px solid #e8c89a;border-radius:20px;box-shadow:0 3px #ddb882,0 6px 20px #b46e2814;position:sticky;top:20px;max-height:calc(100vh - 40px);overflow:hidden;display:flex;flex-direction:column;transition:width .25s ease,opacity .25s ease}.toc-collapsed{width:0;opacity:0;border:none;box-shadow:none;pointer-events:none}.toc-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:2px dashed #f0d0a0;flex-shrink:0}.toc-title{font-size:.95rem;font-weight:700;color:#7a2e0e}.toc-toggle{width:28px;height:28px;padding:0;border-radius:8px;font-size:1.3rem;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:none;border:1.5px solid #e8c89a;background:#fef0dc;color:#8b3a1f;cursor:pointer}.toc-book-title{padding:10px 16px 6px;font-size:.82rem;color:#b07848;line-height:1.4;flex-shrink:0;border-bottom:1px solid #f5e0c0}.toc-list{overflow-y:auto;flex:1;padding:8px 10px;display:flex;flex-direction:column;gap:3px}.toc-list::-webkit-scrollbar{width:4px}.toc-list::-webkit-scrollbar-track{background:transparent}.toc-list::-webkit-scrollbar-thumb{background:#e8c89a;border-radius:4px}.toc-item{display:flex;align-items:baseline;gap:8px;padding:8px 10px;border-radius:10px;color:#5a3010;font-size:.86rem;line-height:1.4;transition:background .12s;text-decoration:none}.toc-item:hover{background:linear-gradient(135deg,#fef0dc,#fad9b0)}.toc-active{background:linear-gradient(135deg,#fde0b0,#f8c880)!important;color:#6b1a00;font-weight:700}.toc-index{flex-shrink:0;width:20px;text-align:right;color:#c09060;font-size:.78rem}.toc-name{flex:1}.toc-open-btn{position:sticky;top:20px;align-self:flex-start;flex-shrink:0;width:32px;padding:12px 4px;border-radius:0 12px 12px 0;background:linear-gradient(180deg,#fef0dc,#fad9b0);border:2px solid #e8c89a;border-left:none;color:#7a2e0e;font-size:.8rem;font-weight:700;line-height:1.5;cursor:pointer;box-shadow:2px 0 8px #b46e281f;writing-mode:vertical-rl;letter-spacing:.1em;transition:background .12s}.toc-open-btn:hover{background:linear-gradient(180deg,#fde0b0,#f8c880)}.reader-main{flex:1;min-width:0;padding:0 0 0 20px;display:flex;flex-direction:column;gap:16px}.reader-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;background:#fffaf3;border:2px solid #e8c89a;border-radius:16px;box-shadow:0 3px #ddb882}.reader-chapter-header{padding:16px 20px;background:#fffaf3;border:2px solid #e8c89a;border-radius:16px;box-shadow:0 3px #ddb882}.reader-chapter-header h2{font-size:clamp(1.2rem,2.5vw,1.7rem);color:#6b2000;letter-spacing:.03em;line-height:1.4;margin:0}.reader-content{padding:24px 28px;background:#fffaf3;border:2px solid #e8c89a;border-radius:16px;box-shadow:0 3px #ddb882,0 6px 24px #b46e280f}.reader-loading{color:#b06040;padding:20px 0;text-align:center}.reader-layout~*{max-width:none}.empty-state{padding:40px 24px;border:2px dashed #e8c89a;border-radius:20px;background:#fffaf0b3;text-align:center}.empty-state h2{font-size:1.5rem;color:#7a2e0e;margin-bottom:10px}.empty-state p{color:#b07848}.breadcrumb{display:flex;align-items:center;gap:6px;color:#b07848;font-size:.84rem;flex-wrap:wrap}.breadcrumb a{color:#b85c38}.markdown{color:#3d2410;font-size:17px;line-height:2}.markdown p{margin:0 0 1.1em;text-indent:2em}.markdown h1,.markdown h2,.markdown h3,.markdown h4{margin:1.6em 0 .7em;color:#6b2000;line-height:1.3;text-indent:0}.markdown h1{font-size:1.45em}.markdown h2{font-size:1.25em}.markdown h3{font-size:1.1em}.markdown pre{overflow:auto;padding:16px;background:#fdf5e6;border:1.5px solid #e8c89a;border-radius:12px}.markdown code{font-family:ui-monospace,Menlo,monospace;font-size:.88em;background:#fde8c8;padding:2px 6px;border-radius:5px}.markdown pre code{background:none;padding:0}.chapter-nav{display:flex;justify-content:space-between;gap:12px;margin-top:28px;padding-top:18px;border-top:2px dashed #e8c89a}.nav-button{font-family:inherit;flex:1;text-align:center;padding:11px 14px;border-radius:999px;background:linear-gradient(135deg,#fef0dc,#fad9b0);border:2px solid #e0a060;color:#7a2e0e;font-size:.9rem;box-shadow:0 3px #d4904a;transition:transform .12s,box-shadow .12s}.nav-button:not(.disabled):hover{transform:translateY(-2px);box-shadow:0 5px #d4904a}.nav-button.disabled{opacity:.38;box-shadow:0 2px #e0c090;background:#fdf5e8;border-color:#e0c090}.error{color:#b83232;padding:12px 16px;background:#fff4f4;border:1.5px solid #f5c0b0;border-radius:12px;margin-top:12px}@media(max-width:700px){.reader-layout{flex-direction:column}.toc-sidebar{width:100%;position:relative;top:0;max-height:260px}.toc-collapsed{width:100%;max-height:0;padding:0;overflow:hidden}.toc-open-btn{position:relative;top:0;width:100%;writing-mode:horizontal-tb;border-radius:12px;border:2px solid #e8c89a;padding:8px;letter-spacing:.2em}.reader-main{padding:12px 0 0}.reader-content{padding:18px 14px}.chapter-nav{flex-direction:column}}
