:root{--primary-color: #2196F3;--primary-hover: #1976D2;--primary-light: #21CBF3;--text-dark: #2d3748;--text-light: #718096;--bg-light: #f5f5f5;--bg-white: #ffffff;--border-light: #e2e8f0;--border-gray: #cbd5e0;--shadow-light: rgba(0, 0, 0, .1);--shadow-medium: rgba(0, 0, 0, .3);--shadow-dark: rgba(0, 0, 0, .5);--radius-small: 4px;--radius-medium: 8px;--transition-fast: .2s ease;--transition-standard: .3s ease;--z-overlay: 15;--z-modal: 20;--z-toc: 1010;--z-message: 25}*{box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0;padding:0;display:flex;flex-direction:column;height:100vh;background-color:var(--bg-light);color:var(--text-dark);line-height:1.6}header{background:linear-gradient(90deg,var(--primary-color),var(--primary-light));color:#fff;padding:1rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px var(--shadow-light)}.title{font-size:1.5rem;font-weight:600;display:flex;align-items:center;gap:1rem}.book-title{font-size:1rem;font-weight:400;max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.9;padding-left:1rem;border-left:1px solid rgba(255,255,255,.3)}.controls{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}button{background-color:var(--primary-color);color:#fff;border:none;padding:.75rem 1.25rem;border-radius:var(--radius-small);cursor:pointer;font-size:.9rem;font-weight:500;transition:all var(--transition-fast);position:relative;overflow:hidden}button:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 8px var(--shadow-light)}button:active:not(:disabled){transform:translateY(0)}button:disabled{background-color:var(--text-light);cursor:not-allowed;opacity:.6;transform:none;box-shadow:none}button:focus{outline:2px solid rgba(33,150,243,.5);outline-offset:2px}.file-input{display:none}main{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}#viewer{flex:1;overflow:auto;background-color:var(--bg-white);padding:2rem;box-shadow:inset 0 0 20px var(--shadow-light);position:relative;scroll-behavior:smooth}#viewer:empty:before{content:"Select an EPUB file to start reading";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-light);font-size:1.2rem;text-align:center}footer{background-color:var(--border-light);padding:1rem;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border-gray)}.page-info{display:flex;align-items:center;gap:.75rem;font-weight:500}input[type=number]{width:5rem;padding:.5rem;border:2px solid var(--border-gray);border-radius:var(--radius-small);font-size:.9rem;text-align:center;transition:border-color var(--transition-fast)}input[type=number]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2196f31a}.toc-container{position:fixed;top:0;left:0;width:350px;height:100%;background-color:var(--bg-white);box-shadow:4px 0 20px var(--shadow-medium);transform:translate(-100%);transition:transform var(--transition-standard);display:flex;flex-direction:column;z-index:var(--z-toc)}.toc-container.open{transform:translate(0)}.toc-header{background:linear-gradient(90deg,var(--primary-color),var(--primary-light));color:#fff;padding:1.5rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px var(--shadow-light)}.toc-header h3{margin:0;font-size:1.2rem;font-weight:600}.toc-content{flex:1;overflow-y:auto;padding:1rem 0}.toc-item{padding:1rem 1.5rem;cursor:pointer;border-bottom:1px solid var(--border-light);transition:all var(--transition-fast);position:relative}.toc-item:hover{background-color:#f8fafc;padding-left:2rem;border-left:4px solid var(--primary-color)}.toc-item:active{background-color:#e2e8f0}.library-container{position:fixed;top:5%;left:5%;width:90%;height:90%;background-color:var(--bg-white);box-shadow:0 20px 60px var(--shadow-dark);border-radius:var(--radius-medium);z-index:var(--z-modal);display:flex;flex-direction:column;overflow:hidden;transform:scale(.8) translateY(-20px);opacity:0;transition:all var(--transition-standard)}.library-container.open{transform:scale(1) translateY(0);opacity:1}.library-header{background:linear-gradient(90deg,var(--primary-color),var(--primary-light));color:#fff;padding:1.5rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px var(--shadow-light)}.library-header h3{margin:0;font-size:1.3rem;font-weight:600}.library-content{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.5rem;padding:2rem;flex:1;overflow-y:auto;background:linear-gradient(45deg,#f8fafc,#fff)}.library-content:empty:before{content:"No EPUB files found in your library";grid-column:1 / -1;text-align:center;color:var(--text-light);font-size:1.1rem;padding:3rem}.library-item{border:2px solid var(--border-light);border-radius:var(--radius-medium);padding:1rem;text-align:center;cursor:pointer;transition:all var(--transition-fast);background-color:var(--bg-white);position:relative;overflow:hidden}.library-item:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary-color),var(--primary-light));transform:scaleX(0);transition:transform var(--transition-fast)}.library-item:hover{transform:translateY(-4px);box-shadow:0 12px 24px var(--shadow-medium);border-color:var(--primary-color)}.library-item:hover:before{transform:scaleX(1)}.library-cover{width:100%;height:240px;object-fit:cover;border-radius:var(--radius-small);margin-bottom:1rem;background:linear-gradient(135deg,#e2e8f0,#f7fafc);border:1px solid var(--border-light);transition:transform var(--transition-fast)}.library-item:hover .library-cover{transform:scale(1.05)}.library-title{font-size:.95rem;font-weight:600;color:var(--text-dark);line-height:1.4;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--shadow-dark);z-index:var(--z-overlay);opacity:0;visibility:hidden;transition:all var(--transition-standard);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.overlay.open{opacity:1;visibility:visible}.message{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--bg-white);padding:2.5rem;border-radius:var(--radius-medium);box-shadow:0 20px 60px var(--shadow-dark);z-index:var(--z-message);text-align:center;max-width:400px;width:90%;opacity:0;visibility:hidden;transform:translate(-50%,-50%) scale(.8);transition:all var(--transition-standard)}.message.show{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}.message h3{margin:0 0 1rem;color:var(--text-dark);font-size:1.3rem}.message p{margin:0 0 1.5rem;color:var(--text-light)}.loading-spinner{width:40px;height:40px;border:4px solid var(--border-light);border-top:4px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-bar{width:100%;height:4px;background-color:var(--border-light);border-radius:2px;overflow:hidden;margin:1rem 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),var(--primary-light));width:0%;transition:width var(--transition-fast);border-radius:2px}@media (max-width: 768px){.title{font-size:1.2rem}.book-title{display:none}.controls{gap:.5rem}button{padding:.6rem 1rem;font-size:.8rem}.toc-container{width:85%}.library-container{width:95%;height:95%;top:2.5%;left:2.5%}.library-content{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;padding:1rem}.library-cover{height:180px}#viewer{padding:1rem}footer{padding:.75rem}.page-info{gap:.5rem}input[type=number]{width:4rem}}@media (max-width: 480px){header{padding:.75rem}.title{font-size:1.1rem}.controls{flex-wrap:wrap;gap:.25rem}button{padding:.5rem .75rem;font-size:.75rem}.library-content{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}@media (prefers-color-scheme: dark){:root{--text-dark: #f7fafc;--text-light: #a0aec0;--bg-light: #1a202c;--bg-white: #2d3748;--border-light: #4a5568;--border-gray: #718096}.library-content{background:linear-gradient(45deg,#2d3748,#1a202c)}}
