:root{--bg-color: #f1f1f1;--sidebar-bg: #ffffff;--card-bg: #ffffff;--text-main: #2d3436;--text-muted: #636e72;--border-color: #eeeeee;--accent-color: #2d3436;--radius_1: 30px}html.dark,body.dark{--bg-color: #000000;--sidebar-bg: #000000;--card-bg: #111111;--text-main: #ffffff;--text-muted: #888888;--border-color: #333333;--accent-color: #ffffff}body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;background-color:var(--bg-color);color:var(--text-main);margin:0;transition:background-color 0.3s ease, color 0.3s ease}.app-container{display:flex;width:100%;height:100vh}.text-center{text-align:center}.text-muted-desc{color:var(--text-muted);font-size:0.9rem}.text-muted-small{font-size:0.8rem;color:var(--text-muted)}.block-text{display:block;width:100%;margin-top:10px}.loading-text{text-align:center;color:var(--text-muted);padding:10px;font-size:0.85rem}.tag{background:transparent;border:1px solid var(--border-color);color:var(--text-main);padding:6px 14px;border-radius:var(--radius_1);font-size:0.85rem;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center}.tag span{opacity:0.5;margin-left:6px;font-size:0.75rem}.tag:hover{border-color:var(--text-main)}.tag.active{background-color:var(--accent-color);color:var(--sidebar-bg);border-color:var(--accent-color)}.tag.big{padding:12px;font-size:0.9rem;width:100%;justify-content:center;border-color:var(--accent-color)}.tag.small{padding:4px 10px;font-size:0.75rem}.tag.mini{padding:4px 8px;font-size:0.7rem;min-width:30px;justify-content:center}.tag.btn-sync-trigger{border-color:var(--accent-color)}.sidebar{width:20vw;-min-width:350px;max-width:500px;background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);padding:30px 25px;display:flex;flex-direction:column;overflow-y:auto;box-sizing:border-box}.sidebar h1{font-size:2rem;font-weight:800;margin:0 0 20px}.sidebar h1 a{color:var(--text-main);text-decoration:none;transition:opacity 0.3s ease}.sidebar h1 a:hover{opacity:0.7}.sidebar .search-bar{background:var(--bg-color);border:1px solid var(--border-color);color:var(--text-main);padding:12px 18px;border-radius:var(--radius_1);margin-bottom:30px;outline:none;width:100%;box-sizing:border-box}.sidebar .search-bar::placeholder{color:var(--text-muted)}.sidebar .filter-group h3{font-size:0.8rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin:0 0 15px 0}.sidebar .tags-container,.sidebar .sort-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:30px}.sidebar .collections-title{margin-top:30px}.sidebar .collection-wrapper{display:flex;align-items:center;gap:5px;margin-bottom:8px}.sidebar #btn-create-collection,.sidebar .btn-add{width:100%;padding:12px;background:transparent;border:1px dashed var(--text-muted);color:var(--text-main);border-radius:var(--radius_1);cursor:pointer;margin-bottom:12px;font-size:0.9rem;display:flex;justify-content:center;align-items:center}.sidebar #btn-create-collection:hover,.sidebar .btn-add:hover{border-color:var(--text-main);background:rgba(128, 128, 128, 0.1)}.sidebar .btn-add{margin-bottom:25px}.sidebar-footer{margin-top:auto;padding-top:20px;border-top:1px solid var(--border-color)}.sidebar-footer .controls-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.sidebar-footer .display-sizes{display:flex;align-items:center;gap:5px}.sidebar-footer .display-sizes span{font-size:0.7rem;color:var(--text-muted);margin-right:5px;text-transform:uppercase}.sidebar-footer .sidebar-btn{display:block;width:100%;padding:14px;border:1px solid var(--border-color);border-radius:var(--radius_1);text-align:center;text-decoration:none;color:var(--text-main);font-size:0.95rem;font-weight:500;margin-bottom:12px;box-sizing:border-box;transition:all 0.2s ease}.sidebar-footer .sidebar-btn:hover{border-color:var(--text-main);background:rgba(128, 128, 128, 0.05)}.sidebar-footer .sidebar-btn.danger:hover{background-color:#ff4757;color:white;border-color:#ff4757}.sidebar-footer .sidebar-btn.btn-cancel{margin:0;flex:1;display:flex;align-items:center;justify-content:center}#theme-toggle{background:var(--bg-color);border:1px solid var(--border-color);color:var(--text-main);width:34px;height:34px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all 0.2s ease}#theme-toggle:hover{border-color:var(--text-main);transform:scale(1.1) rotate(15deg)}.content-area{flex-grow:1;padding:30px;overflow-y:auto;background-color:var(--bg-color)}.content-area #current-view-title{margin-top:0;margin-bottom:25px;font-size:2rem;font-weight:800}.content-area .grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(170px, 1fr));gap:40px;align-items:start}.content-area .grid.size-s{grid-template-columns:repeat(auto-fill, minmax(120px, 1fr))}.content-area .grid.size-s .book-cover-wrapper{height:180px}.content-area .grid.size-m .book-cover-wrapper{height:260px}.content-area .grid.size-l{grid-template-columns:repeat(auto-fill, minmax(250px, 1fr))}.content-area .grid.size-l .book-cover-wrapper{height:380px}.book-card{position:relative;transition:transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);display:flex;flex-direction:column}.book-card:hover{transform:translateY(-8px)}.book-card:hover .btn-edit-trigger,.book-card:hover .btn-add-collection-trigger{opacity:1;transform:scale(1)}.book-card .btn-edit-trigger,.book-card .btn-add-collection-trigger{position:absolute;top:10px;z-index:10;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 10px rgba(0, 0, 0, 0.15);opacity:0;transform:scale(0.8);transition:all 0.2s ease;border:1px solid var(--border-color)}.book-card .btn-edit-trigger{right:54px;background:var(--accent-color);color:var(--sidebar-bg);font-size:1.1rem}.book-card .btn-edit-trigger:hover{transform:scale(1.1) !important;background:var(--text-main);color:var(--bg-color);border-color:var(--text-main)}.book-card .btn-add-collection-trigger{right:10px;background:var(--accent-color);color:var(--sidebar-bg);font-size:1.4rem;padding-bottom:2px}.book-card .btn-add-collection-trigger:hover{transform:scale(1.1) !important;background:var(--accent-color);color:var(--sidebar-bg);border-color:var(--text-main)}.book-card .btn-add-collection-trigger.is-remove{background:var(--accent-color);color:var(--sidebar-bg)}.book-card .btn-add-collection-trigger.is-remove:hover{background:#ff4757;color:white;border-color:#ff4757}.book-card .book-cover-wrapper{display:flex;align-items:flex-end;justify-content:center;margin-bottom:15px;width:100%}.book-card .book-cover-wrapper img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:4px;box-shadow:0 12px 24px rgba(0, 0, 0, 0.2)}.book-card h3{font-size:0.9rem;margin:0 0 4px;font-weight:600;line-height:1.3}.book-card p{font-size:0.8rem;color:var(--text-muted);margin:0}.modal{display:flex;align-items:center;justify-content:center;display:none;position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.6);backdrop-filter:blur(8px);padding:20px}.modal.active{display:flex}.modal .modal-content{background-color:var(--sidebar-bg);color:var(--text-main);padding:40px;border-radius:var(--radius_1);width:100%;max-width:800px;box-shadow:0 30px 60px rgba(0, 0, 0, 0.3);border:1px solid var(--border-color);position:relative;max-height:85vh;overflow-y:auto}.modal .modal-content.modal-sm{max-width:400px}.modal .modal-content.modal-md{max-width:500px}.modal .modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:35px}.modal .modal-header.mb-15{margin-bottom:15px}.modal .modal-header h2{margin:0;font-size:1.8rem;font-weight:800;letter-spacing:-0.5px}.modal .modal-header .close-modal{background:var(--bg-color);border:1px solid var(--border-color);color:var(--text-main);width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.2s}.modal .modal-header .close-modal:hover{transform:scale(1.1);border-color:var(--text-main)}.form-group{margin-bottom:25px}.form-group label{display:block;font-size:0.85rem;font-weight:600;color:var(--text-muted);margin-bottom:10px}.form-group label.flex-label{display:flex;justify-content:space-between;align-items:center}.form-group input,.form-group select,.form-group textarea{width:100%;padding:14px 16px;background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius_1);color:var(--text-main);font-size:0.95rem;outline:none;box-sizing:border-box;transition:all 0.2s;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--text-main);background:var(--sidebar-bg);box-shadow:0 0 0 4px rgba(0, 0, 0, 0.03)}.form-group textarea{resize:vertical}.form-group.cover-upload-group{background:var(--bg-color);padding:20px;border-radius:var(--radius_1);border:1px dashed var(--border-color)}.form-group.cover-upload-group .group-title{margin-bottom:15px;font-size:0.95rem}.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.form-grid.two-columns{grid-template-columns:1fr 1fr}.edit-cover-actions{display:flex;gap:10px;margin-bottom:15px;align-items:center;flex-wrap:wrap}#edit-cover-input{flex:1;min-width:200px}.cropper-container-wrapper{margin-top:20px}.cropper-preview-wrapper{max-height:350px;overflow:hidden;border-radius:8px;margin-bottom:10px;background:var(--bg-color);text-align:center}#cropper-image,#add-cropper-image{max-width:100%;max-height:350px;display:block}.cropper-toolbar{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:15px}.modal-tags-picker{display:flex;flex-wrap:wrap;gap:5px;max-height:180px;overflow-y:auto;padding:12px;background:var(--bg-color);border:1px solid var(--border-color);border-radius:15px}.modal-tags-picker.short-picker{max-height:120px}.modal-tags-picker .tag-checkbox{cursor:pointer}.modal-tags-picker .tag-checkbox.full-width{display:flex;width:100%}.modal-tags-picker .tag-checkbox input{display:none}.modal-tags-picker .tag-checkbox .tag-label{display:inline-block;padding:5px 10px;background:var(--sidebar-bg);border:1px solid var(--border-color);border-radius:var(--radius_1);font-size:0.75rem;color:var(--text-main)}.modal-tags-picker .tag-checkbox .tag-label.full-width-label{flex:1;text-align:left;font-size:0.9rem;padding:8px 12px}.modal-tags-picker .tag-checkbox input:checked+.tag-label{background:var(--accent-color);color:var(--sidebar-bg);border-color:var(--accent-color)}#collections-checkboxes{display:flex;gap:8px}#qr-code-container{margin:25px 0;min-height:220px;display:flex;align-items:center;justify-content:center;background:white;border-radius:12px;padding:15px}#qr-loader{color:#2d3436;font-weight:bold}#qr-code-img{max-width:100%;border-radius:8px}#qr-status-text{font-weight:600;color:#3498db;animation:pulse-blue 1.5s infinite}.form-actions-flex{display:flex;gap:10px}.modal-footer-actions{display:flex;gap:10px;margin-top:20px}.modal-footer-actions .btn-submit{flex:2;margin:0}.modal-footer-actions .btn-danger{flex:1}.btn-submit{width:100%;padding:18px;background:var(--text-main);color:var(--sidebar-bg);border:none;border-radius:var(--radius_1);font-size:1rem;font-weight:700;cursor:pointer;margin-top:15px}.btn-submit.flex-2{margin:0;flex:2}.btn-submit:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(0, 0, 0, 0.2)}@keyframes pulse-blue{0%{border-color:var(--border-color)}50%{border-color:#3498db}100%{border-color:var(--border-color)}}.isbn-loading{animation:pulse-blue 1.5s infinite}.btn-danger{background-color:#ff4757;color:white;border:none;border-radius:var(--radius_1);padding:10px;cursor:pointer;font-weight:600;transition:opacity 0.2s}.btn-danger:hover{opacity:0.8}.empty-state{display:none;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;text-align:center;opacity:0.6;animation:fadeIn 0.4s ease}.empty-state .empty-icon{font-size:3rem;margin-bottom:15px}.empty-state p{font-size:1.1rem;margin-bottom:20px;color:var(--text-main)}.empty-state button{margin:0 auto}.empty-state button:hover{background:var(--border-color)}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:0.6;transform:translateY(0)}}.auth-container{height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color);padding:20px}.auth-card{background-color:var(--sidebar-bg);padding:40px;border-radius:24px;width:100%;max-width:420px;box-shadow:0 12px 24px rgba(0, 0, 0, 0.2);border:1px solid var(--border-color);text-align:center}.auth-card h1{margin-bottom:30px}.auth-card .forgot-link{display:block;margin-top:20px;font-size:0.85rem;color:var(--text-muted);text-decoration:none}.auth-card .forgot-link:hover{color:var(--text-main)}.admin-container{max-width:1000px;margin:40px auto;padding:0 20px}.admin-container .admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.admin-container h1{margin-bottom:0}.admin-form-card{background:var(--sidebar-bg);padding:30px;border-radius:12px;border:1px solid var(--border-color);margin-bottom:40px}.admin-form-card h3{margin-top:0}.admin-table{width:100%;border-collapse:collapse;background:var(--sidebar-bg);border-radius:var(--radius_1);border:1px solid var(--border-color);overflow:hidden}.admin-table th,.admin-table td{padding:15px;text-align:left;border-bottom:1px solid var(--border-color)}.admin-table th{background:var(--bg-color);color:var(--text-muted);font-size:0.75rem;text-transform:uppercase}.admin-table .action-link{text-decoration:none}.admin-table .action-link.edit-link{color:var(--text-main);margin-right:15px}.admin-table .action-link.delete-link{color:#ff4757}.alert{padding:15px;border-radius:var(--radius_1);margin-bottom:25px;text-align:center;border:1px solid}.alert.success{background:rgba(46, 204, 113, 0.1);color:#27ae60;border-color:#2ecc71}.alert.danger{background:rgba(231, 76, 60, 0.1);color:#e74c3c;border-color:#e74c3c}.badge{padding:4px 10px;border-radius:var(--radius_1);font-size:0.75rem;font-weight:bold;text-transform:uppercase;display:inline-block}.badge.admin{background:#ffeaa7;color:#d35400}.badge.contributeur{background:#dff9fb;color:#130f40}.badge.visionneur{background:#f1f2f6;color:#2f3542}html.dark .badge.admin{background:rgba(255, 234, 167, 0.2);color:#fab1a0}html.dark .badge.contributeur{background:rgba(223, 249, 251, 0.2);color:#81ecec}html.dark .badge.visionneur{background:rgba(241, 242, 246, 0.1);color:#dfe6e9}#toast-container{position:fixed;bottom:30px;right:30px;z-index:9999;display:flex;flex-direction:column;gap:15px;pointer-events:none}.toast{background:var(--sidebar-bg);color:var(--text-main);padding:16px 24px;border-radius:var(--radius_1);box-shadow:0 12px 24px rgba(0, 0, 0, 0.2);border:1px solid var(--border-color);font-size:0.95rem;font-weight:500;display:flex;align-items:center;gap:12px;transform:translateX(120%);opacity:0;transition:all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55)}.toast.show{transform:translateX(0);opacity:1}.toast.success{border-left:4px solid #2ecc71}.toast.error{border-left:4px solid #ff4757}.avatar-wrapper{text-align:center;margin-bottom:30px}.avatar-preview{width:150px;height:150px;border-radius:50%;object-fit:cover;border:3px solid var(--border-color);box-shadow:0 12px 24px rgba(0, 0, 0, 0.2);margin-bottom:15px}#form-profile .cropper-preview-wrapper{max-height:400px;overflow:hidden;border-radius:12px;margin-top:15px;display:none;background:var(--bg-color);text-align:center}#form-profile .cropper-preview-wrapper img{max-width:100%;max-height:400px;display:block;margin:0 auto}.main-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.main-header #current-view-title{margin-bottom:0}.drawer-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.4);backdrop-filter:blur(2px);z-index:2999;display:none;opacity:0;transition:opacity 0.3s ease}.drawer-overlay.active{display:block;opacity:1}.activity-drawer{position:fixed;top:0;right:-25vw;width:25vw;max-width:100%;height:100vh;background:var(--sidebar-bg);box-shadow:-5px 0 25px rgba(0, 0, 0, 0.15);z-index:3000;transition:right 0.3s ease-in-out;display:flex;flex-direction:column;border-left:1px solid var(--border-color)}.activity-drawer.open{right:0}.activity-drawer .drawer-header{padding:20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.activity-drawer .drawer-header h2{margin:0;font-size:1.3rem;font-weight:800}.activity-drawer .drawer-header .close-modal{background:var(--bg-color);border:1px solid var(--border-color);color:var(--text-main);width:34px;height:34px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:all 0.2s ease}.activity-drawer .drawer-header .close-modal:hover{border-color:var(--text-main)}.activity-drawer .drawer-content{flex:1;overflow-y:auto;padding:20px}.activity-drawer .activity-item{display:flex;gap:15px;margin-bottom:20px;align-items:flex-start}.activity-drawer .activity-item .act-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--border-color)}.activity-drawer .activity-item .act-details{flex:1;font-size:0.85rem;line-height:1.4}.activity-drawer .activity-item .act-details p{margin:0 0 5px 0;color:var(--text-main)}.activity-drawer .activity-item .act-details em{color:var(--text-muted);font-style:normal;font-weight:600}.activity-drawer .activity-item .act-details .act-date{font-size:0.7rem;color:var(--text-muted)}