:root{--bg: #FAF8F3;--surface: #F2EFE7;--border: #E0DDD4;--text: #1C1A16;--text-muted: #7A7669;--text-chapter: #3D3A31;--accent: #8B5E3C;--accent-light: #F0E6DA;--reading-width: 680px;--font-body: "Merriweather", "Times New Roman", serif;--font-ui: "Be Vietnam Pro", system-ui, sans-serif;--fs-body: 17px;--lh-body: 2.05;--spacing: 1.6rem}[data-theme=dark]{--bg: #12100D;--surface: #1C1A16;--border: #2E2B24;--text: #EDE9DF;--text-muted: #7A7669;--text-chapter: #C9C4B5;--accent: #C8926A;--accent-light: #2A2018}[data-theme=sepia]{--bg: #F6EFD9;--surface: #EDE4C8;--border: #D5C99A;--text: #3B2F1E;--text-muted: #7A6A4A;--text-chapter: #5A4A30;--accent: #8B5E3C;--accent-light: #EDE4C8}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--fs-body);scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;background:var(--bg);color:var(--text);line-height:var(--lh-body);transition:background .25s,color .25s;min-height:100vh}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.icon-btn{all:unset;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:10px;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s;flex-shrink:0}.icon-btn:hover,.icon-btn:focus-visible{background:var(--surface);color:var(--text)}.icon-btn svg{width:20px;height:20px;stroke-width:1.6}.admin-layout{min-height:100vh;background:var(--bg);font-family:var(--font-ui)}.admin-nav{background:var(--surface);border-bottom:1px solid var(--border);padding:0 1.5rem;display:flex;align-items:center;gap:1rem;height:56px}.admin-nav-brand{font-family:var(--font-ui);font-weight:500;font-size:15px;color:var(--text);text-decoration:none;margin-right:auto}.admin-nav-link{font-family:var(--font-ui);font-size:13px;color:var(--text-muted);text-decoration:none;padding:6px 12px;border-radius:8px;transition:background .15s,color .15s}.admin-nav-link:hover,.admin-nav-link.active{background:var(--accent-light);color:var(--accent)}.admin-content{max-width:900px;margin:0 auto;padding:2rem 1.5rem}.admin-page-title{font-size:1.4rem;font-weight:400;color:var(--text);margin-bottom:1.5rem}.btn{all:unset;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:13px;font-weight:400;padding:8px 16px;border-radius:10px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.9}.btn-outline{border:1px solid var(--border);color:var(--text-muted)}.btn-outline:hover{background:var(--surface);color:var(--text)}.btn-danger{color:#c0392b;border:1px solid #e8c7c7}.btn-danger:hover{background:#fdf0f0}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.2rem}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:1.2rem}.form-label{font-size:12px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.form-input,.form-textarea,.form-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;outline:none;transition:border-color .15s}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--accent)}.form-textarea{resize:vertical;min-height:120px;font-family:var(--font-ui);line-height:1.6}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;padding:8px 12px;font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.table td{padding:12px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--surface)}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:500}.badge-published{background:#e8f5e9;color:#2e7d32}.badge-draft{background:var(--surface);color:var(--text-muted)}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1.5rem;padding:1.5rem}.book-card{text-decoration:none;color:var(--text);display:flex;flex-direction:column;gap:.5rem;transition:transform .15s}.book-card:hover{transform:translateY(-2px)}.book-cover{width:100%;aspect-ratio:2/3;border-radius:8px;object-fit:cover;background:var(--surface);border:1px solid var(--border)}.book-cover-placeholder{width:100%;aspect-ratio:2/3;border-radius:8px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.book-card-title{font-family:var(--font-ui);font-size:13px;font-weight:400;line-height:1.4;color:var(--text)}.book-card-author{font-family:var(--font-ui);font-size:12px;color:var(--text-muted)}.spinner-wrap{display:flex;justify-content:center;align-items:center;padding:4rem}.spinner{width:32px;height:32px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (min-width: 640px){.books-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}.topbar{position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:1px solid var(--border);padding:0 1rem;display:flex;align-items:center;gap:.5rem;height:52px;transition:background .25s,border-color .25s}.topbar-title{flex:1;font-family:var(--font-ui);font-size:13px;font-weight:400;color:var(--text-muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}.progress-track{position:fixed;top:52px;left:0;right:0;height:2px;background:var(--border);z-index:99}.progress-fill{height:100%;background:var(--accent);transition:width .1s linear}.reader-wrap{max-width:var(--reading-width);margin:0 auto;padding:2.5rem 1.5rem 6rem}.chapter-header{margin-bottom:2.8rem;padding-bottom:1.8rem;border-bottom:1px solid var(--border)}.chapter-label{font-family:var(--font-ui);font-size:11px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:.7rem}.chapter-title{font-family:var(--font-ui);font-size:1.55rem;font-weight:300;color:var(--text);line-height:1.25;margin-bottom:.9rem}.chapter-meta{font-family:var(--font-ui);font-size:13px;color:var(--text-muted)}.novel-text p{margin-bottom:var(--spacing);-webkit-hyphens:auto;hyphens:auto;word-break:break-word}.novel-text em{font-style:italic}.novel-text strong{font-weight:400}.novel-text h1,.novel-text h2,.novel-text h3{font-family:var(--font-ui);font-weight:300;color:var(--text-chapter);margin:2rem 0 1rem;line-height:1.3;text-indent:0}.novel-text h1{font-size:1.4rem}.novel-text h2{font-size:1.2rem}.novel-text h3{font-size:1.05rem}.novel-text hr{border:none;text-align:center;color:var(--text-muted);letter-spacing:.4em;font-size:12px;margin:2.5rem 0;-webkit-user-select:none;user-select:none}.novel-text hr:after{content:"· · ·"}.novel-text blockquote{border-left:2px solid var(--accent);margin:1.5rem 0;padding:.5rem 1rem;color:var(--text-muted);font-style:italic;text-indent:0}.novel-text blockquote p{text-indent:0;margin-bottom:0}.novel-text ul,.novel-text ol{padding-left:1.5rem;margin-bottom:var(--spacing)}.novel-text li{margin-bottom:.4rem}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--bg);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:.6rem 1.2rem calc(.6rem + env(safe-area-inset-bottom));gap:.5rem;z-index:100;transition:background .25s,border-color .25s}.nav-btn{all:unset;display:flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:13px;font-weight:400;color:var(--text-muted);padding:8px 14px;border-radius:10px;cursor:pointer;transition:background .15s,color .15s}.nav-btn:hover,.nav-btn:focus-visible{background:var(--surface);color:var(--text)}.nav-btn:disabled{opacity:.35;pointer-events:none}.nav-btn svg{width:18px;height:18px;stroke-width:1.6;flex-shrink:0}.chapter-counter{font-family:var(--font-ui);font-size:12px;color:var(--text-muted);text-align:center}.panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:200;opacity:0;pointer-events:none;transition:opacity .2s}.panel-overlay.open{opacity:1;pointer-events:all}.settings-panel{position:fixed;bottom:0;left:0;right:0;background:var(--bg);border-top:1px solid var(--border);border-radius:18px 18px 0 0;padding:1.2rem 1.4rem calc(1.4rem + env(safe-area-inset-bottom));z-index:201;transform:translateY(100%);transition:transform .28s cubic-bezier(.34,1.1,.64,1),background .25s}.settings-panel.open{transform:translateY(0)}.panel-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 1.4rem}.panel-section-label{font-family:var(--font-ui);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.8rem}.theme-row{display:flex;gap:10px;margin-bottom:1.4rem}.theme-btn{all:unset;flex:1;height:44px;border-radius:10px;border:1.5px solid transparent;font-family:var(--font-ui);font-size:13px;text-align:center;cursor:pointer;transition:border-color .15s}.theme-btn[data-t=light]{background:#faf8f3;color:#1c1a16}.theme-btn[data-t=sepia]{background:#f6efd9;color:#3b2f1e}.theme-btn[data-t=dark]{background:#12100d;color:#ede9df}.theme-btn.active{border-color:var(--accent)}.font-size-row{display:flex;align-items:center;gap:12px;margin-bottom:1.4rem}.fs-btn{all:unset;width:40px;height:40px;border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:var(--font-body);color:var(--text-muted);transition:background .15s,color .15s;flex-shrink:0}.fs-btn:hover{background:var(--surface);color:var(--text)}.fs-label{flex:1;text-align:center;font-family:var(--font-ui);font-size:13px;color:var(--text-muted)}.line-height-row{display:flex;align-items:center;gap:12px}.lh-btn{all:unset;flex:1;height:38px;border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:var(--font-ui);font-size:12px;color:var(--text-muted);transition:background .15s,color .15s,border-color .15s;text-align:center}.lh-btn.active,.lh-btn:hover{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.lh-btn.align-btn{display:flex;align-items:center;justify-content:center;gap:6px}.toc-page{max-width:680px;margin:0 auto;padding:2rem 1.5rem 6rem}.toc-book-header{display:flex;gap:1.5rem;margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.toc-cover{width:100px;flex-shrink:0;aspect-ratio:2/3;border-radius:8px;object-fit:cover;background:var(--surface);border:1px solid var(--border)}.toc-cover-placeholder{width:100px;flex-shrink:0;aspect-ratio:2/3;border-radius:8px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.toc-book-title{font-family:var(--font-ui);font-size:1.4rem;font-weight:300;color:var(--text);line-height:1.3;margin-bottom:.5rem}.toc-book-author{font-family:var(--font-ui);font-size:14px;color:var(--text-muted);margin-bottom:.8rem}.toc-book-desc{font-family:var(--font-ui);font-size:13px;color:var(--text-muted);line-height:1.7}.toc-section-label{font-family:var(--font-ui);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1rem}.toc-list{list-style:none}.toc-item{border-bottom:1px solid var(--border)}.toc-item:last-child{border-bottom:none}.toc-link{display:flex;align-items:baseline;gap:1rem;padding:1rem 0;text-decoration:none;color:var(--text);transition:color .15s}.toc-link:hover{color:var(--accent)}.toc-num{font-family:var(--font-ui);font-size:11px;color:var(--text-muted);min-width:2rem;flex-shrink:0}.toc-chapter-title{font-family:var(--font-ui);font-size:14px;flex:1;line-height:1.4}.toc-reading-time{font-family:var(--font-ui);font-size:11px;color:var(--text-muted);flex-shrink:0}.home-header{background:var(--surface);border-bottom:1px solid var(--border);padding:1.2rem 1.5rem;display:flex;align-items:center;gap:1rem}.home-brand{font-family:var(--font-ui);font-size:16px;font-weight:400;color:var(--text);flex:1}.home-content{padding:1.5rem;max-width:900px;margin:0 auto}.section-heading{font-family:var(--font-ui);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1.2rem}@media (min-width: 640px){.reader-wrap{padding:3rem 2.5rem 6rem}.chapter-title{font-size:1.8rem}.toc-page{padding:3rem 2.5rem 6rem}}
