:root{--font-body:"Noto Sans Thai", "Sarabun", system-ui, -apple-system, "Helvetica Neue", "Hiragino Sans", "Yu Gothic", sans-serif;--font-size:18px;--line-height:1.9}html[data-theme=light]{--bg:#fff;--fg:#1a1a1a;--fg-muted:#6b6b6b;--border:#e5e5e5;--accent:#2563eb;--card:#fafafa;--shadow:0 10px 30px #00000014}html[data-theme=sepia]{--bg:#f4ecd8;--fg:#5b4636;--fg-muted:#8a7860;--border:#d9cdb0;--accent:#8b4513;--card:#eee2c8;--shadow:0 10px 30px #5b46361f}html[data-theme=dark]{--bg:#161616;--fg:#e8e8e8;--fg-muted:#9a9a9a;--border:#2c2c2c;--accent:#60a5fa;--card:#1f1f1f;--shadow:0 10px 30px #00000080}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:16px;line-height:1.6;transition:background-color .2s,color .2s}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}code{background:var(--card);border-radius:4px;padding:.1em .35em;font-size:.9em}.full-loading{min-height:100vh;color:var(--fg-muted);justify-content:center;align-items:center;display:flex}.page{max-width:760px;padding:1.5rem 1rem 4rem;padding-left:max(1rem, env(safe-area-inset-left,0));padding-right:max(1rem, env(safe-area-inset-right,0));margin:0 auto}.topbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.topbar h1{flex:1;margin:0;font-size:1.4rem}.topbar-right{align-items:center;gap:.5rem;display:flex}.muted{color:var(--fg-muted);font-size:.95rem}.muted.small{font-size:.85rem}.sub{color:var(--fg-muted);margin:.25rem 0 .5rem;font-size:1rem}.description{margin:1rem 0;line-height:1.7}.link-btn{color:var(--accent);background:0 0;border:none;border-radius:6px;padding:.4rem .6rem;font-size:.95rem}.link-btn:hover{background:var(--card)}.icon-btn{min-width:2rem;height:2rem;color:var(--fg);justify-content:center;align-items:center;padding:0 .4rem;font-size:.95rem;font-weight:600;line-height:1;display:inline-flex}.icon-btn svg{display:block}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:var(--card);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:.85rem;width:100%;max-width:360px;padding:2rem;display:flex}.login-card h1{text-align:center;margin:0 0 .5rem}.login-form{flex-direction:column;gap:.75rem;display:flex}.login-form input{border:1px solid var(--border);background:var(--bg);color:var(--fg);font:inherit;border-radius:8px;padding:.85rem .9rem}.login-form input:focus{outline:2px solid var(--accent);outline-offset:-1px}.login-form button[type=submit]{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.85rem;font-size:1rem;font-weight:600}.login-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.google-btn{background:var(--bg);color:var(--fg);border:1px solid var(--border);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.6rem;padding:.75rem;font-size:.95rem;font-weight:600;display:flex}.google-btn:hover:not(:disabled){border-color:var(--accent)}.google-btn:disabled{opacity:.6;cursor:not-allowed}.divider{text-align:center;color:var(--fg-muted);margin:.25rem 0;font-size:.8rem;position:relative}.divider:before,.divider:after{content:"";background:var(--border);width:38%;height:1px;position:absolute;top:50%}.divider:before{left:0}.divider:after{right:0}.error{color:#dc2626;margin:0;font-size:.875rem}.cover{object-fit:cover;background:var(--border);border-radius:6px;flex-shrink:0;width:80px;height:120px;display:block}.cover-large{width:180px;height:260px}.cover-placeholder{background:var(--card);border:1px solid var(--border);color:var(--fg-muted);justify-content:center;align-items:center;font-size:2rem;font-weight:600;display:flex}.cover-large.cover-placeholder{font-size:4rem}.novel-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.novel-card{border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:12px;flex-direction:column;transition:border-color .18s,transform .18s;display:flex;overflow:hidden}.novel-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}.novel-card .cover{aspect-ratio:2/3;border-radius:0;width:100%;height:auto}.novel-card .cover-placeholder{aspect-ratio:2/3;border:none;border-bottom:1px solid var(--border);width:100%;height:auto;font-size:3.5rem}.novel-card-body{flex:1;min-width:0;padding:.75rem .9rem .9rem}.novel-list h2{margin:0 0 .2rem;font-size:1rem;line-height:1.3}.novel-list .sub{margin:0 0 .35rem;font-size:.85rem}@media (width<=480px){.novel-list{grid-template-columns:repeat(2,1fr);gap:.85rem}}.novel-header{align-items:flex-start;gap:1.5rem;margin-bottom:1.5rem;display:flex}.novel-header-body{flex:1;min-width:0}@media (width<=560px){.novel-header{text-align:center;flex-direction:column;align-items:center}}.chapter-list{margin:1.5rem 0 0;padding:0;list-style:none}.chapter-list li a{border-bottom:1px solid var(--border);color:var(--fg);align-items:center;gap:1rem;padding:.85rem .25rem;display:flex}.chapter-list li a:hover{color:var(--accent);text-decoration:none}.ch-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:48px}.ch-num{color:var(--fg-muted);font-variant-numeric:tabular-nums;text-align:right;min-width:3.5ch}.ch-title{flex:1;min-width:0}.resume-btn{background:var(--accent);color:#fff;border-radius:8px;margin:1rem 0;padding:.65rem 1.1rem;font-weight:600;display:inline-block}.resume-btn:hover{opacity:.9;text-decoration:none}.reader{min-height:100vh;padding-bottom:4rem}.reader-topbar{background:var(--bg);border-bottom:1px solid var(--border);padding:.5rem .75rem;padding-left:max(.75rem, env(safe-area-inset-left,0));padding-right:max(.75rem, env(safe-area-inset-right,0));z-index:10;justify-content:space-between;align-items:center;gap:.5rem;display:flex;position:sticky;top:0}.reader-title{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.95rem;font-weight:600;overflow:hidden}.reader-content{max-width:65ch;font-size:var(--font-size);line-height:var(--line-height);margin:2rem auto;padding:0 1.25rem}.chapter-cover-banner{object-fit:cover;border-radius:8px;width:100%;max-height:420px;margin-bottom:2rem;display:block}.reader-content p{margin:1.2em 0}.reader-content h1,.reader-content h2,.reader-content h3{margin-top:2em;line-height:1.35}.reader-content blockquote{border-left:3px solid var(--border);color:var(--fg-muted);margin-left:0;padding-left:1rem}.reader-content hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.reader-nav{padding:.75rem;padding-bottom:max(.75rem, env(safe-area-inset-bottom,0));background:var(--bg);border-top:1px solid var(--border);gap:.5rem;display:flex;position:sticky;bottom:0}.reader-nav button{border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:8px;flex:1;padding:.8rem;font-size:.95rem;font-weight:600}.reader-nav button:hover:not(:disabled){border-color:var(--accent)}.reader-nav button:disabled{opacity:.35;cursor:not-allowed}.settings-panel{background:var(--card);border:1px solid var(--border);width:280px;box-shadow:var(--shadow);z-index:20;border-radius:12px;flex-direction:column;gap:1rem;padding:1rem;display:flex;position:fixed;top:3.5rem;right:1rem}.settings-row{flex-direction:column;gap:.4rem;display:flex}.settings-row label{color:var(--fg-muted);font-size:.85rem}.seg{gap:.3rem;display:flex}.seg button{border:1px solid var(--border);background:var(--bg);color:var(--fg);text-transform:capitalize;border-radius:6px;flex:1;padding:.5rem;font-size:.9rem}.seg button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.settings-row select{border:1px solid var(--border);background:var(--bg);color:var(--fg);font:inherit;border-radius:6px;padding:.5rem}.settings-row input[type=range]{width:100%}.close-btn{border:1px solid var(--border);color:var(--fg);font:inherit;background:0 0;border-radius:6px;padding:.5rem}@media (width<=640px){.settings-panel{width:auto;left:1rem;right:1rem}.topbar h1{font-size:1.2rem}}.bookmark-panel{background:var(--card);border:1px solid var(--border);width:280px;box-shadow:var(--shadow);z-index:20;border-radius:12px;flex-direction:column;gap:1rem;padding:1rem;display:flex;position:fixed;top:3.5rem;right:1rem}.bookmark-add-btn{background:var(--accent);color:#fff;font:inherit;border:none;border-radius:8px;padding:.6rem .8rem;font-weight:600}.bookmark-add-btn:hover{opacity:.9}.bookmark-add-btn:disabled{opacity:.5;cursor:not-allowed}.bookmark-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.bookmark-item{border:1px solid var(--border);background:var(--bg);cursor:pointer;color:var(--fg);border-radius:8px;align-items:center;gap:.6rem;padding:.55rem .65rem;display:flex}.bookmark-item:hover{border-color:var(--accent)}.bookmark-item .ch-title{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.95rem;overflow:hidden}.bookmark-item .ch-num{min-width:auto;font-size:.85rem}.bookmark-meta{color:var(--fg-muted);white-space:nowrap;font-size:.78rem}.bookmark-remove{color:var(--fg-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.25rem .45rem;font-size:1rem}.bookmark-remove:hover{color:#dc2626;background:#dc262614}.bookmark-empty{color:var(--fg-muted);text-align:center;padding:.5rem 0;font-size:.9rem}.bookmarks-section{border:1px solid var(--border);background:var(--card);border-radius:10px;margin-top:1rem;padding:.8rem 1rem}.bookmarks-section h3{color:var(--fg-muted);margin:0 0 .6rem;font-size:.95rem;font-weight:600}@media (width<=640px){.bookmark-panel{width:auto;left:1rem;right:1rem}}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;margin:1.2rem 0;display:flex}.pagination button{border:1px solid var(--border);background:var(--bg);color:var(--fg);font:inherit;border-radius:6px;padding:.45rem .85rem;font-size:.9rem}.pagination button:hover:not(:disabled){border-color:var(--accent)}.pagination button:disabled{opacity:.35;cursor:not-allowed}.pagination-jump{align-items:center;gap:.35rem;display:inline-flex}.pagination-jump select{border:1px solid var(--border);background:var(--bg);color:var(--fg);font:inherit;border-radius:6px;padding:.35rem .4rem;font-size:.9rem}.pagination-info{color:var(--fg-muted);font-size:.85rem}.bookmarks-section .pagination{margin:.6rem 0 0}
