@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&family=Noto+Serif+SC:wght@400;500;700&display=swap";
:root{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display:"Outfit", var(--font-sans);--font-chinese:"Noto Serif SC", "PingFang SC", "Lantinghei SC", "Hiragino Sans GB", "Microsoft YaHei", Georgia, serif;--radius-sm:8px;--radius-md:14px;--radius-lg:24px;--radius-full:9999px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--background:#f8fafc;--foreground:#0f172a;--card-bg:#ffffffbf;--card-border:#e2e8f0cc;--card-shadow:0 8px 32px 0 #94a3b814;--accent:#6366f1;--accent-glow:#6366f126;--accent-secondary:#ec4899;--accent-gradient:linear-gradient(135deg, #6366f1 0%, #ec4899 100%);--input-bg:#fff;--input-border:#e2e8f0;--muted:#64748b;--muted-light:#f1f5f9;--reader-bg:#fdfaf2;--reader-text:#1a1f2c;--reader-sentence-active:#6366f11f;--reader-sentence-active-border:#6366f1}[data-theme=dark]{--background:#0b0f19;--foreground:#f8fafc;--card-bg:#141b2da6;--card-border:#ffffff0a;--card-shadow:0 8px 32px 0 #0000005e;--accent:#818cf8;--accent-glow:#818cf840;--accent-secondary:#f472b6;--accent-gradient:linear-gradient(135deg, #818cf8 0%, #f472b6 100%);--input-bg:#141b2d;--input-border:#ffffff14;--muted:#94a3b8;--muted-light:#162035;--reader-bg:#131722;--reader-text:#e2e8f0;--reader-sentence-active:#818cf82e;--reader-sentence-active-border:#818cf8}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-sans);background-color:var(--background);color:var(--foreground);scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-normal), color var(--transition-normal)}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;outline:none;font-family:inherit}.glass{background:var(--card-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:var(--radius-md);transition:transform var(--transition-normal), border-color var(--transition-normal), box-shadow var(--transition-normal)}.glass:hover{border-color:#6366f140;box-shadow:0 12px 40px #6366f114}.blob-bg{z-index:-1;pointer-events:none;background-color:var(--background);position:fixed;inset:0;overflow:hidden}.blob{border-radius:var(--radius-full);filter:blur(80px);opacity:.15;mix-blend-mode:multiply;width:500px;height:500px;animation:25s ease-in-out infinite float-blob;position:absolute}[data-theme=dark] .blob{opacity:.1;mix-blend-mode:screen}.blob-1{background:#6366f1;animation-delay:0s;top:-10%;right:-10%}.blob-2{background:#ec4899;animation-delay:5s;bottom:-15%;left:-10%}.blob-3{background:#3b82f6;width:400px;height:400px;animation-delay:10s;top:40%;left:30%}@keyframes float-blob{0%,to{transform:translate(0)scale(1)}33%{transform:translate(30px,-50px)scale(1.1)}66%{transform:translate(-20px,20px)scale(.9)}}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--muted);border-radius:var(--radius-full);opacity:.5}::-webkit-scrollbar-thumb:hover{background:var(--accent)}.title-gradient{font-family:var(--font-display);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:800}.dashboard-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;margin-top:32px;display:grid}.book-card{cursor:pointer;flex-direction:column;height:380px;padding:16px;display:flex;position:relative;overflow:hidden}.book-cover-container{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--muted-light) 0%, var(--card-border) 100%);justify-content:center;align-items:center;width:100%;height:180px;margin-bottom:16px;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 12px #0000000d}.book-cover-img{object-fit:cover;width:100%;height:100%;transition:transform var(--transition-normal)}.book-card:hover .book-cover-img{transform:scale(1.05)}.book-title{font-family:var(--font-display);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:1.15rem;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.book-author{color:var(--muted);margin-bottom:auto;font-size:.9rem}.card-progress-container{width:100%;margin-top:16px}.card-progress-bar{background:var(--muted-light);border-radius:var(--radius-full);width:100%;height:6px;margin-bottom:6px;overflow:hidden}.card-progress-fill{background:var(--accent-gradient);border-radius:var(--radius-full);height:100%}.card-progress-text{color:var(--muted);justify-content:space-between;font-size:.75rem;display:flex}.upload-zone{border:2px dashed var(--card-border);border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:border-color var(--transition-normal), background-color var(--transition-normal);background:#ffffff05;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px 24px;display:flex}.upload-zone:hover,.upload-zone.dragover{border-color:var(--accent);background:var(--accent-glow)}.reader-container{max-width:800px;font-family:var(--font-chinese);letter-spacing:.05em;color:var(--reader-text);margin:0 auto;padding:40px 24px 140px;font-size:1.25rem;line-height:2.1}.reader-paragraph{text-indent:2em;text-align:justify;margin-bottom:2rem}.sentence{cursor:pointer;transition:background-color var(--transition-fast), border-bottom var(--transition-fast), color var(--transition-fast);border-radius:4px;margin:0 -4px;padding:0 4px;display:inline}.sentence:hover{background-color:#6366f10f}.sentence.active{background-color:var(--reader-sentence-active);border-bottom:2px solid var(--reader-sentence-active-border);text-shadow:0 0 1px #6366f11a;font-weight:500}.drawer{background:var(--background);border-right:1px solid var(--card-border);z-index:100;width:320px;height:100%;transition:transform var(--transition-normal);flex-direction:column;display:flex;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:20px 0 40px #0000000d}.drawer.open{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--card-border);justify-content:space-between;align-items:center;padding:24px;display:flex}.drawer-content{flex:1;padding:16px;overflow-y:auto}.drawer-item{text-align:left;border-radius:var(--radius-sm);width:100%;transition:background-color var(--transition-fast), color var(--transition-fast);margin-bottom:4px;padding:12px 16px;font-size:.95rem;display:block}.drawer-item:hover,.drawer-item.active{background:var(--muted-light);color:var(--accent)}.drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:90;opacity:0;pointer-events:none;transition:opacity var(--transition-normal);background:#0006;position:fixed;inset:0}.drawer-overlay.open{opacity:1;pointer-events:auto}.control-dock-container{z-index:80;width:90%;max-width:760px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.control-dock{flex-direction:column;gap:12px;padding:16px 24px;display:flex}.dock-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}@media (max-width:600px){.control-dock-container{width:95%;bottom:12px}.control-dock{gap:8px;padding:12px 16px}.dock-settings-row{flex-direction:column;align-items:stretch;gap:8px;width:100%}}.btn-round{border-radius:var(--radius-full);background:var(--muted-light);width:48px;height:48px;color:var(--foreground);transition:background-color var(--transition-fast), transform var(--transition-fast);justify-content:center;align-items:center;display:flex}.btn-round:hover{background:var(--card-border);transform:scale(1.05)}.btn-primary-round{border-radius:var(--radius-full);background:var(--accent-gradient);color:#fff;width:56px;height:56px;box-shadow:0 4px 14px var(--accent-glow);transition:transform var(--transition-fast), box-shadow var(--transition-fast);justify-content:center;align-items:center;display:flex}.btn-primary-round:hover{transform:scale(1.08);box-shadow:0 6px 20px #6366f166}.form-select{border-radius:var(--radius-sm);background:var(--input-bg);border:1px solid var(--input-border);color:var(--foreground);cursor:pointer;min-width:160px;transition:border-color var(--transition-fast);outline:none;padding:8px 12px;font-size:.85rem}.form-select:focus{border-color:var(--accent)}.range-slider-container{color:var(--muted);align-items:center;gap:8px;font-size:.8rem;display:flex}.range-slider{-webkit-appearance:none;border-radius:var(--radius-full);background:var(--muted-light);outline:none;width:100px;height:4px}.range-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;width:12px;height:12px;transition:transform var(--transition-fast);border-radius:50%}.range-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.btn{border-radius:var(--radius-sm);transition:background-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);align-items:center;gap:8px;padding:10px 20px;font-size:.95rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 4px 12px var(--accent-glow)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #6366f14d}.btn-secondary{background:var(--muted-light);color:var(--foreground);border:1px solid var(--card-border)}.btn-secondary:hover{background:var(--card-border)}.login-card{text-align:center;flex-direction:column;gap:24px;width:100%;max-width:420px;padding:40px 32px;display:flex}.form-group{text-align:left;flex-direction:column;gap:8px;display:flex}.form-label{color:var(--muted);font-size:.85rem;font-weight:500}.form-input{border-radius:var(--radius-sm);background:var(--input-bg);border:1px solid var(--input-border);color:var(--foreground);transition:border-color var(--transition-fast);outline:none;padding:12px 16px;font-size:.95rem}.form-input:focus{border-color:var(--accent)}.divider{text-align:center;color:var(--muted);align-items:center;margin:8px 0;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";border-bottom:1px solid var(--card-border);flex:1}.divider:not(:empty):before{margin-right:.5em}.divider:not(:empty):after{margin-left:.5em}.skeleton{background:linear-gradient(90deg, var(--muted-light) 25%, var(--card-border) 50%, var(--muted-light) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite loading}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}
