/* grid view (hidden by default) */ .grid-view display: none; padding: 2rem; background: #ffffff; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1.5rem;
.path-bar font-family: 'SF Mono', 'Fira Code', monospace; font-size: 1rem; background: rgba(0, 0, 0, 0.35); display: inline-block; padding: 0.35rem 1rem; border-radius: 40px; letter-spacing: 0.3px; backdrop-filter: blur(4px); margin-bottom: 0.75rem;
// init: build both views, set table as default visible buildTable(); buildGrid(); setActiveView('table'); index of ebooks epub parent directory
.grid-filename a:hover text-decoration: underline;
.view-btn.active background: #1a4d44; border-color: #1a4d44; color: white; /* grid view (hidden by default) */
/* container */ .container max-width: 1280px; margin: 0 auto; background: #ffffff; border-radius: 28px; box-shadow: 0 20px 35px -12px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.05); overflow: hidden; transition: all 0.2s ease;
// Toggle view between table and grid let currentView = 'table'; // 'table' or 'grid' const tableViewDiv = document.getElementById('table-view'); const gridViewDiv = document.getElementById('grid-view'); const viewBtns = document.querySelectorAll('.view-btn'); .path-bar font-family: 'SF Mono'
.file-icon, .dir-icon font-size: 1.25rem; margin-right: 10px; vertical-align: middle; display: inline-block; width: 28px; text-align: center;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <title>Index of /ebooks/epub/</title> <style> * margin: 0; padding: 0; box-sizing: border-box; body background: #f1f3f5; font-family: 'Segoe UI', 'Roboto', 'Fira Code', 'Cascadia Code', monospace, system-ui, -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif; padding: 2rem 1.5rem; color: #1e2a3e;