ICO/styles-admin.css

739 lines
13 KiB
CSS

/* Reset et styles de base pour l'admin */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', system-ui, sans-serif;
background-color: #121212;
color: #ffffff;
min-height: 100vh;
overflow-x: hidden;
}
/* Page d'administration */
.admin-page {
background-color: #121212;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 2rem;
}
/* Page de connexion */
.admin-login {
width: 90%;
max-width: 400px;
margin: auto;
background-color: #1e1e1e;
padding: 2rem;
border-radius: 1rem;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
}
.admin-login h1 {
font-size: 2rem;
margin-bottom: 2rem;
text-align: center;
}
/* En-tête de l'administration */
.admin-header {
width: 100%;
max-width: 1200px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 1px solid #2a2a2a;
}
.admin-header h1 {
font-size: 2rem;
margin: 0;
}
/* Zone de contenu principale */
.admin-content {
width: 100%;
max-width: 1200px;
background-color: #1e1e1e;
padding: 2rem;
border-radius: 1rem;
min-height: calc(100vh - 12rem);
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
}
/* Boutons d'action */
.admin-actions {
display: flex;
gap: 1rem;
}
.action-button {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.8rem 1.5rem;
background-color: #2196f3;
color: white;
border: none;
border-radius: 2rem;
cursor: pointer;
font-size: 1rem;
text-decoration: none;
transition: all 0.3s ease;
}
.action-button:hover {
background-color: #1976d2;
transform: translateY(-2px);
}
.action-button-success {
background-color: #28a745;
}
.action-button-success:hover {
background-color: #218838;
}
.action-button-danger {
background-color: #dc3545;
}
.action-button-danger:hover {
background-color: #c82333;
}
.action-button-secondary {
background-color: #6c757d;
}
.action-button-secondary:hover {
background-color: #5a6268;
}
/* Menu administration */
.admin-menu {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 2rem;
padding: 1rem;
}
.admin-menu-item {
aspect-ratio: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
background: #1e1e1e;
border: 2px solid #333;
border-radius: 1.5rem;
text-decoration: none;
color: white;
padding: 2rem;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.admin-menu-item:hover {
transform: translateY(-5px);
border-color: #2196f3;
box-shadow: 0 5px 20px rgba(33, 150, 243, 0.15);
}
.menu-icon {
margin-bottom: 1rem;
}
.menu-icon svg {
width: 64px;
height: 64px;
stroke: #fff;
transition: all 0.3s ease;
}
.admin-menu-item:hover .menu-icon svg {
stroke: #2196f3;
transform: scale(1.1);
}
.menu-content h2 {
font-size: 1.2rem;
font-weight: 500;
margin: 0;
}
.menu-content p {
position: absolute;
left: 0;
right: 0;
bottom: -100%;
padding: 1rem;
background: rgba(33, 150, 243, 0.95);
color: white;
font-size: 0.9rem;
transition: 0.3s ease;
}
.admin-menu-item:hover .menu-content p {
bottom: 0;
}
/* Styles pour la table des utilisateurs */
.admin-table {
width: 100%;
border-collapse: collapse;
margin-top: 1rem;
background: #1e1e1e;
border-radius: 0.5rem;
overflow: hidden;
}
.admin-table th,
.admin-table td {
padding: 1rem;
text-align: left;
border-bottom: 1px solid #2a2a2a;
}
.admin-table th {
background-color: #2a2a2a;
font-weight: 500;
color: #ffffff;
}
.admin-table tr:hover {
background-color: #2a2a2a;
}
.table-actions {
display: flex;
gap: 0.5rem;
}
.admin-table tr.main-admin {
background-color: rgba(33, 150, 243, 0.1);
}
.admin-table tr.main-admin:hover {
background-color: rgba(33, 150, 243, 0.15);
}
.admin-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.25rem 0.5rem;
border-radius: 1rem;
font-size: 0.8rem;
font-weight: 500;
background-color: #2196f3;
color: white;
margin-left: 0.5rem;
}
.admin-badge .icon {
width: 12px;
height: 12px;
}
/* Formulaires */
.form-group {
margin-bottom: 1.5rem;
}
/* Toggle pour contenu mature */
.toggle-label {
display: flex;
align-items: center;
gap: 0.5rem;
cursor: pointer;
user-select: none;
}
.toggle-label input[type="checkbox"] {
position: relative;
width: 3rem;
height: 1.5rem;
appearance: none;
background-color: #2a2a2a;
border-radius: 1.5rem;
cursor: pointer;
transition: all 0.3s ease;
}
.toggle-label input[type="checkbox"]::before {
content: "";
position: absolute;
top: 0.2rem;
left: 0.2rem;
width: 1.1rem;
height: 1.1rem;
background-color: white;
border-radius: 50%;
transition: all 0.3s ease;
}
.toggle-label input[type="checkbox"]:checked {
background-color: #dc3545;
}
.toggle-label input[type="checkbox"]:checked::before {
left: 1.7rem;
}
.toggle-text {
color: #e0e0e0;
}
.toggle-warning {
font-size: 1.2rem;
opacity: 0.7;
}
.form-group label {
display: block;
margin-bottom: 0.5rem;
color: #e0e0e0;
}
.form-group input {
width: 100%;
padding: 0.8rem;
border: none;
border-radius: 0.5rem;
background-color: #2a2a2a;
color: white;
font-size: 1rem;
}
.form-group input:focus {
outline: 2px solid #2196f3;
background-color: #333;
}
.form-container {
max-width: 500px;
margin: 0 auto;
}
.form-actions {
margin-top: 2rem;
display: flex;
justify-content: flex-end;
gap: 1rem;
}
.form-textarea {
width: 100%;
padding: 0.8rem;
border: none;
border-radius: 0.5rem;
background-color: #2a2a2a;
color: white;
font-size: 1rem;
min-height: 100px;
resize: vertical;
}
.form-textarea:focus {
outline: 2px solid #2196f3;
background-color: #333;
}
/* Messages */
.message {
padding: 1rem;
border-radius: 0.5rem;
margin-bottom: 1.5rem;
text-align: center;
}
.success-message {
background-color: #28a745;
color: white;
}
.error-message {
background-color: #dc3545;
color: white;
}
/* Styles pour l'arborescence */
.tree-container {
padding: 1rem;
background: #2a2a2a;
border-radius: 0.5rem;
}
.tree-list {
list-style: none;
padding-left: 1.5rem;
}
.tree-item {
margin: 0.5rem 0;
}
.tree-item-content {
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.5rem;
border-radius: 0.25rem;
background: #1e1e1e;
}
.tree-item.active > .tree-item-content {
background: #2196f3;
}
.tree-link {
color: white;
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
/* Style spécifique pour le dossier racine */
.root-folder > .tree-item-content {
background: rgba(33, 150, 243, 0.2);
border-left: 4px solid #2196f3;
margin-bottom: 1rem;
padding: 1rem;
}
.root-folder > .tree-item-content .folder-icon {
font-size: 1.4rem;
}
.root-folder > .tree-item-content .tree-link {
font-size: 1.2rem;
font-weight: 500;
color: #ffffff;
}
/* Styles pour le dossier carousel */
.carousel-folder > .tree-item-content {
background: rgba(255, 140, 0, 0.1);
border-left: 4px solid #ff8c00;
margin-bottom: 1rem;
padding: 1rem;
transition: all 0.3s ease;
}
.carousel-folder > .tree-item-content:hover {
background: rgba(255, 140, 0, 0.2);
}
.carousel-folder .tree-link {
color: #ff8c00;
font-weight: 500;
}
.carousel-folder .folder-icon {
color: #ff8c00;
font-size: 1.2rem;
}
.carousel-button {
background: rgba(255, 140, 0, 0.2) !important;
color: #ff8c00 !important;
padding: 0.5rem !important;
border-radius: 0.5rem !important;
transition: all 0.3s ease !important;
}
.carousel-button:hover {
background: rgba(255, 140, 0, 0.3) !important;
transform: scale(1.1) !important;
}
.folder-icon {
font-size: 1.2rem;
}
.tree-actions {
display: flex;
gap: 0.5rem;
}
.tree-button {
background: none;
border: none;
color: white;
cursor: pointer;
padding: 0.25rem;
border-radius: 0.25rem;
font-size: 1rem;
}
.tree-button:hover {
background: rgba(255, 255, 255, 0.1);
}
.tree-button-danger:hover {
background: rgba(220, 53, 69, 0.2);
}
.image-actions .tree-button {
background-color: rgba(0, 0, 0, 0.7);
padding: 0.5rem;
border-radius: 0.5rem;
transition: all 0.3s ease;
}
.image-actions .tree-button:hover {
background-color: rgba(220, 53, 69, 0.9);
transform: scale(1.1);
}
.tree-button-danger {
background-color: rgba(220, 53, 69, 0.7);
}
/* Styles pour le toggle des sous-dossiers */
.tree-item-content {
position: relative;
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem;
border-radius: 0.25rem;
background: #1e1e1e;
margin: 0.25rem 0;
}
.toggle-btn {
background: none;
border: none;
padding: 0.25rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
transition: transform 0.3s ease;
}
.toggle-btn.active {
transform: rotate(90deg);
}
.toggle-spacer {
width: 24px;
}
.toggle-icon {
width: 16px;
height: 16px;
transition: transform 0.3s ease;
}
.subtree {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-out;
opacity: 0;
}
.subtree.active {
max-height: 1000px;
opacity: 1;
transition: max-height 0.3s ease-in, opacity 0.3s ease-in;
}
/* Ajuster les marges et le padding pour une meilleure hiérarchie visuelle */
.tree-list {
list-style: none;
padding-left: 1.5rem;
margin: 0;
}
.tree-list:first-child {
padding-left: 0;
}
/* Animation pour le hover des boutons */
.toggle-btn:hover {
color: #2196f3;
background: rgba(33, 150, 243, 0.1);
border-radius: 4px;
}
/* Styles pour les modales */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.8);
z-index: 1000;
}
.modal-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #1e1e1e;
padding: 2rem;
border-radius: 1rem;
min-width: 300px;
max-width: 500px;
width: 90%;
}
.modal h2 {
margin-bottom: 1.5rem;
}
/* Styles pour les listes d'images */
.images-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 1rem;
padding: 1rem;
}
.image-item {
position: relative;
aspect-ratio: 1;
border-radius: 0.5rem;
overflow: hidden;
background-color: #2a2a2a;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.image-item:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
z-index: 1;
}
.image-item img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.image-item:hover img {
transform: scale(1.1);
}
.image-checkbox {
position: absolute;
top: 0.5rem;
left: 0.5rem;
z-index: 2;
width: 24px;
height: 24px;
cursor: pointer;
accent-color: #2196f3;
}
.image-checkbox:hover {
transform: scale(1.1);
}
.image-actions {
position: absolute;
top: 0.5rem;
right: 0.5rem;
z-index: 2;
}
.upload-zone {
border: 2px dashed #2196f3;
border-radius: 1rem;
padding: 2rem;
text-align: center;
margin: 1rem;
background-color: rgba(33, 150, 243, 0.1);
}
.upload-zone.drag-over {
background-color: rgba(33, 150, 243, 0.2);
border-color: #1976d2;
}
/* Styles spécifiques pour la page de gestion du carrousel */
body[data-page="carrousel"] .upload-zone {
border-color: #ff8c00;
background-color: rgba(255, 140, 0, 0.1);
}
body[data-page="carrousel"] .action-button-success {
background-color: #ff8c00;
}
body[data-page="carrousel"] .action-button-success:hover {
background-color: #ff7700;
}
body[data-page="carrousel"] .admin-header {
border-bottom-color: rgba(255, 140, 0, 0.3);
}
#imageUploadForm {
display: none;
}
/* Media Queries */
@media (max-width: 768px) {
.admin-page {
padding: 1rem;
}
.admin-header {
flex-direction: column;
gap: 1rem;
text-align: center;
}
.admin-actions {
flex-direction: column;
width: 100%;
}
.action-button {
width: 100%;
justify-content: center;
}
.admin-menu {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 1rem;
}
}
/* Accessibilité */
a:focus-visible,
button:focus-visible,
input:focus-visible {
outline: 2px solid #2196f3;
outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}