:root { --neox-primary: #2c5fff; --neox-secondary: #0043ff; --neox-accent: #ff3e3e; --neox-gradient: linear-gradient(135deg, var(--neox-primary) 0%, var(--neox-secondary) 100%); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { height: 100vh; display: flex; justify-content: center; align-items: center; } .hidden { display: none !important; } #adminPanel { width: 90vw; max-width: 1300px; height: 90vh; max-height: 850px; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 999; background: linear-gradient(135deg, rgba(15, 15, 15, 0.98) 0%, rgba(25, 25, 25, 0.98) 100%); border-radius: 20px; overflow: hidden; box-shadow: 0 0 40px rgba(0, 0, 0, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); } .neox-logo { position: absolute; top: 20px; left: 25px; display: flex; flex-direction: column; align-items: flex-start; } .logo-text { font-size: 32px; font-weight: 800; color: #fff; letter-spacing: 2px; } .x-highlight { color: var(--neox-primary); text-shadow: 0 0 15px var(--neox-primary); } .logo-subtitle { font-size: 14px; color: rgba(255, 255, 255, 0.5); letter-spacing: 3px; text-transform: uppercase; margin-top: -5px; } .admin-container { display: grid; grid-template-columns: 1fr 320px; height: 100%; padding: 80px 25px 25px; gap: 25px; } .chat-section { flex: 1; display: flex; flex-direction: column; min-width: 0; height: 100%; overflow: hidden; } .chat-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 2px solid rgba(255, 255, 255, 0.1); } .chat-header h2 { color: #fff; font-size: 24px; text-transform: uppercase; letter-spacing: 2px; display: flex; align-items: center; gap: 10px; } .chat-header h2 i { color: var(--neox-primary); } .notification-badge { background: var(--neox-gradient); color: white; border-radius: 50%; padding: 4px 10px; font-size: 14px; margin-left: 15px; display: none; box-shadow: 0 0 15px rgba(44, 95, 255, 0.5); animation: pulse 2s infinite; } .chat-messages { flex: 1; overflow-y: auto; padding: 20px; background: rgba(20, 20, 20, 0.95); border-radius: 15px; margin-bottom: 20px; border: 1px solid rgba(255, 255, 255, 0.05); min-height: 0; } .chat-messages::-webkit-scrollbar { width: 6px; } .chat-messages::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } .chat-messages::-webkit-scrollbar-thumb { background: var(--neox-primary); border-radius: 3px; } .message { background: rgba(35, 35, 35, 0.95); border-radius: 10px; padding: 15px; color: white; word-wrap: break-word; margin-bottom: 10px; width: calc(100% - 10px); box-sizing: border-box; } .message .header { display: flex; align-items: center; margin-bottom: 10px; } .message .username { color: #fff; font-weight: bold; font-size: 16px; margin-right: 12px; } .message .timestamp { color: rgba(255, 255, 255, 0.5); font-size: 13px; } .message .content { margin-top: 8px; line-height: 1.4; font-size: 14px; white-space: pre-wrap; word-break: break-word; } .admin { border-left: 4px solid var(--neox-accent); background: linear-gradient(90deg, rgba(255, 62, 62, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .superadmin { border-left: 4px solid #ff9f1a; background: linear-gradient(90deg, rgba(255, 159, 26, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .mod { border-left: 4px solid var(--neox-primary); background: linear-gradient(90deg, rgba(44, 95, 255, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .chat-input { display: flex; gap: 15px; background: rgba(30, 30, 30, 0.95); padding: 15px; border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.05); position: relative; } .input-wrapper { position: relative; width: 100%; display: flex; align-items: center; gap: 10px; } .input-icon { position: absolute; left: 15px; color: rgba(255, 255, 255, 0.3); z-index: 2; } .chat-input input { width: 100%; padding: 12px 12px 12px 45px; border: none; border-radius: 10px; background: rgba(40, 40, 40, 0.95); color: #fff; font-size: 15px; transition: all 0.3s ease; } .chat-input button { min-width: 50px; padding: 12px 20px; border: none; border-radius: 10px; background: var(--neox-gradient); color: white; cursor: pointer; transition: all 0.3s ease; font-size: 18px; display: flex; align-items: center; justify-content: center; } .chat-input button:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(44, 95, 255, 0.4); } .staff-list { width: 320px; background: rgba(25, 25, 25, 0.95); border-radius: 15px; padding: 20px; border: 1px solid rgba(255, 255, 255, 0.05); max-height: calc(100vh - 160px); overflow-y: auto; flex-shrink: 0; } .staff-list h3 { color: #fff; margin-bottom: 20px; font-size: 20px; text-transform: uppercase; letter-spacing: 2px; padding-bottom: 15px; border-bottom: 2px solid rgba(255, 255, 255, 0.1); display: flex; align-items: center; gap: 10px; } .staff-list h3 i { color: var(--neox-primary); } .staff-list h3 .online-count { font-size: 14px; color: rgba(255, 255, 255, 0.5); font-weight: normal; background: rgba(44, 95, 255, 0.1); padding: 2px 8px; border-radius: 10px; margin-left: 8px; } .staff-member { display: flex; align-items: center; padding: 12px; margin-bottom: 8px; border-radius: 8px; background: rgba(35, 35, 35, 0.95); transition: all 0.2s ease; } .status-icon { display: flex; align-items: center; margin-right: 10px; width: 16px; height: 16px; justify-content: center; } .status-icon i { font-size: 12px; transition: all 0.3s ease; } .staff-member .status { display: none; } .staff-member .info { flex: 1; min-width: 0; } .staff-member .name { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: #fff; margin-bottom: 2px; } .staff-member .role { font-size: 12px; color: rgba(255, 255, 255, 0.5); text-transform: uppercase; } .staff-member:hover { background: rgba(40, 40, 40, 0.98); transform: translateX(4px); } .staff-member.self { background: rgba(44, 95, 255, 0.1); border: 1px solid rgba(44, 95, 255, 0.2); } .staff-member.self:hover { background: rgba(44, 95, 255, 0.15); border-color: rgba(44, 95, 255, 0.3); } .close-button { position: absolute; top: 20px; right: 20px; background: none; border: none; color: #fff; font-size: 24px; cursor: pointer; transition: all 0.3s ease; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .close-button:hover { color: var(--neox-accent); background: rgba(255, 62, 62, 0.1); transform: rotate(90deg); } .neox-watermark { position: absolute; bottom: 15px; right: 20px; color: rgba(255, 255, 255, 0.3); font-size: 12px; letter-spacing: 2px; text-transform: uppercase; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } @keyframes messageAppear { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } @keyframes pulseStatus { 0% { box-shadow: 0 0 10px rgba(67, 181, 129, 0.5); } 50% { box-shadow: 0 0 15px rgba(67, 181, 129, 0.8); } 100% { box-shadow: 0 0 10px rgba(67, 181, 129, 0.5); } } .notification { position: fixed; top: 20px; right: 20px; background: rgba(25, 25, 25, 0.98); color: white; padding: 15px; border-radius: 10px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.5); z-index: 9999; min-width: 300px; transform: translateX(120%); transition: transform 0.5s ease; border: 1px solid rgba(255, 255, 255, 0.1); } .notification .notif-header { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; } .notification .notif-content { word-break: break-word; font-size: 14px; line-height: 1.4; } .notification.superadmin { border-left: 4px solid #cc0000; } .notification.admin { border-left: 4px solid #ff6b00; } .notification.mod { border-left: 4px solid #2d9900; } .status-selector { position: relative; margin-left: auto; cursor: pointer; } .current-status { display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: rgba(40, 40, 40, 0.95); border-radius: 8px; color: #fff; font-size: 14px; transition: all 0.3s ease; border: 1px solid transparent; } .current-status i { transition: color 0.3s ease; } .current-status[data-status="online"] { border-color: #43b581; } .current-status[data-status="online"] i { color: #43b581; } .current-status[data-status="idle"] { border-color: #faa61a; } .current-status[data-status="idle"] i { color: #faa61a; } .current-status[data-status="dnd"] { border-color: #f04747; } .current-status[data-status="dnd"] i { color: #f04747; } .current-status:hover { background: rgba(50, 50, 50, 0.95); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .status-options { position: absolute; top: 100%; right: 0; margin-top: 8px; background: rgba(30, 30, 30, 0.98); border-radius: 8px; padding: 8px; width: 200px; display: none; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); z-index: 100; } .status-options.show { display: block; animation: fadeIn 0.2s ease; } .status-option { display: flex; align-items: center; gap: 8px; padding: 10px 12px; color: #fff; border-radius: 6px; transition: all 0.2s ease; cursor: pointer; } .status-option:hover { background: rgba(50, 50, 50, 0.95); } .status-option.active { background: var(--primary); } .status-option i { width: 16px; } .status-option[data-status="online"] i { color: #43b581; } .status-option[data-status="idle"] i { color: #faa61a; } .status-option[data-status="dnd"] i { color: #f04747; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .staff-search { position: relative; margin-bottom: 15px; } .staff-search input { width: 100%; padding: 10px 10px 10px 35px; border: none; border-radius: 8px; background: rgba(40, 40, 40, 0.95); color: #fff; font-size: 14px; transition: all 0.3s ease; } .staff-search input:focus { outline: none; background: rgba(50, 50, 50, 0.95); box-shadow: 0 0 15px rgba(44, 95, 255, 0.2); } .staff-search .input-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: rgba(255, 255, 255, 0.3); } .staff-member.hidden-staff { display: none; } @media screen and (max-width: 1400px) { #adminPanel { width: 95vw; height: 95vh; } .admin-container { grid-template-columns: 1fr 280px; padding: 70px 20px 20px; gap: 20px; } } @media screen and (max-width: 1024px), screen and (max-width: 768px), screen and (max-width: 480px) { .chat-messages { padding: 15px; } } @media screen and (max-width: 1024px) { .admin-container { grid-template-columns: 1fr; grid-template-rows: 1fr auto; gap: 15px; } .chat-section { order: 1; min-height: 0; } .staff-list { order: 2; max-height: 250px; width: 100%; } } @media screen and (max-width: 768px) { #adminPanel { width: 100vw; height: 100vh; border-radius: 0; } .admin-container { padding: 60px 15px 15px; } .staff-list { max-height: 200px; } .chat-section { height: calc(100vh - 300px); min-height: 400px; } .chat-messages { height: calc(100% - 100px); min-height: 200px; } .chat-header { flex-direction: row; align-items: center; padding-bottom: 10px; } .status-selector { margin-left: auto; } .clear-chat-button { order: 2; } } @media screen and (max-width: 480px) { .admin-container { padding: 50px 10px 10px; gap: 10px; } .chat-header { flex-direction: column; align-items: flex-start; } .status-selector { width: 100%; margin-left: 0; } .chat-input { padding: 10px; flex-direction: column; gap: 8px; } .input-wrapper { width: 100%; } .chat-input input { width: 100%; padding: 12px 12px 12px 35px; } .chat-input button { width: 100%; padding: 12px; font-size: 15px; } .input-icon { left: 10px; top: 50%; transform: translateY(-50%); } .staff-list { max-height: 180px; } .message { padding: 10px; font-size: 14px; } .chat-section { height: calc(100vh - 250px); min-height: 300px; } .chat-messages { padding: 10px; height: calc(100% - 90px); min-height: 150px; } .clear-chat-button { width: auto; margin-right: 0; } } .status-icon i { filter: drop-shadow(0 0 2px currentColor); } .message.superadmin { border-left: 4px solid #cc0000; background: linear-gradient(90deg, rgba(204, 0, 0, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .message.admin { border-left: 4px solid #ff6b00; background: linear-gradient(90deg, rgba(255, 107, 0, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .message.mod { border-left: 4px solid #2d9900; background: linear-gradient(90deg, rgba(45, 153, 0, 0.1) 0%, rgba(35, 35, 35, 0.95) 100%); } .message.superadmin .username { color: #cc0000; } .message.admin .username { color: #ff6b00; } .message.mod .username { color: #2d9900; } .context-menu { position: fixed; background: rgba(30, 30, 30, 0.98); border-radius: 8px; padding: 8px 0; min-width: 200px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); z-index: 1000; border: 1px solid rgba(255, 255, 255, 0.1); } .context-item { padding: 8px 15px; color: #fff; cursor: pointer; display: flex; align-items: center; gap: 10px; transition: all 0.2s ease; } .context-item:hover { background: rgba(44, 95, 255, 0.2); } .context-item i { width: 16px; text-align: center; color: var(--neox-primary); } #notifications-container { position: fixed; top: 20px; right: 20px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; } .staff-notification { background: linear-gradient(90deg, rgba(15, 15, 15, 0.95), rgba(25, 25, 25, 0.95)); color: white; padding: 12px 15px; border-radius: 8px; min-width: 280px; max-width: 320px; display: flex; align-items: center; gap: 12px; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); border-left: 3px solid var(--neox-primary); opacity: 0; transform: translateX(100%); transition: all 0.3s ease; position: relative; will-change: transform, opacity; } .staff-notification.show { opacity: 1; transform: translateX(0); } .staff-notification.hide { opacity: 0; transform: translateX(100%); pointer-events: none; } .staff-notification .icon { background: rgba(255, 255, 255, 0.1); width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .staff-notification .icon i { color: var(--neox-primary); font-size: 14px; } .staff-notification .content { flex: 1; } .staff-notification .author { font-weight: 600; font-size: 13px; margin-bottom: 2px; color: var(--neox-primary); } .staff-notification .text { font-size: 12px; color: rgba(255, 255, 255, 0.9); } .staff-notification.superadmin { border-left-color: #cc0000; } .staff-notification.superadmin .icon i { color: #cc0000; } .staff-notification.superadmin .author { color: #cc0000; } .staff-notification.admin { border-left-color: #ff6b00; } .staff-notification.admin .icon i { color: #ff6b00; } .staff-notification.admin .author { color: #ff6b00; } .staff-notification.mod { border-left-color: #2d9900; } .staff-notification.mod .icon i { color: #2d9900; } .staff-notification.mod .author { color: #2d9900; } .staff-list::-webkit-scrollbar { width: 6px; } .staff-list::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } .staff-list::-webkit-scrollbar-thumb { background: var(--neox-primary); border-radius: 3px; } .mention-suggestions { position: fixed; max-height: 200px; width: min(300px, 90vw); z-index: 1001; } @media screen and (max-height: 600px) { .mention-suggestions { max-height: 150px; } .chat-messages { max-height: calc(100vh - 300px); } } .mention-desc { font-size: 12px; color: rgba(255, 255, 255, 0.5); margin-left: 8px; } .mention-item.special { background: rgba(44, 95, 255, 0.1); } .mention-item.special i { color: var(--neox-primary); } /* Style pour le bouton emoji */ .emoji-button { min-width: 50px; padding: 12px; border: none; border-radius: 10px; background: rgba(40, 40, 40, 0.95); color: white; cursor: pointer; transition: all 0.3s ease; font-size: 18px; display: flex; align-items: center; justify-content: center; } .emoji-button:hover { background: rgba(50, 50, 50, 0.95); transform: translateY(-2px); } /* Style pour le panneau d'emojis */ .emoji-panel { position: absolute; bottom: calc(100% + 10px); right: 10px; background: rgba(30, 30, 30, 0.98); border-radius: 10px; padding: 15px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.3); border: 1px solid rgba(255, 255, 255, 0.1); display: none; width: 350px; max-height: 400px; z-index: 1000; } .emoji-panel.show { display: block; animation: fadeIn 0.2s ease; } .emoji-container { display: grid; grid-template-columns: repeat(8, 1fr); gap: 8px; max-height: 300px; overflow-y: auto; padding: 5px; } .emoji-item { font-size: 20px; padding: 5px; cursor: pointer; text-align: center; border-radius: 5px; transition: all 0.2s ease; } .emoji-item:hover { background: rgba(255, 255, 255, 0.1); transform: scale(1.2); } .emoji-container::-webkit-scrollbar { width: 6px; } .emoji-container::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } .emoji-container::-webkit-scrollbar-thumb { background: var(--neox-primary); border-radius: 3px; } @media screen and (max-width: 768px) { .emoji-panel { width: 300px; } .emoji-container { grid-template-columns: repeat(6, 1fr); } } @media screen and (max-width: 480px) { .emoji-panel { width: 250px; right: 50%; transform: translateX(50%); } .emoji-container { grid-template-columns: repeat(5, 1fr); } } .clear-chat-button { background: rgba(255, 0, 0, 0.1); border: none; border-radius: 8px; padding: 8px 15px; color: #ff3e3e; cursor: pointer; transition: all 0.3s ease; display: none; align-items: center; gap: 8px; font-size: 14px; margin-left: 10px; } .clear-chat-button i { font-size: 12px; } .clear-chat-button:hover { background: rgba(255, 0, 0, 0.15); } .clear-chat-button.show { display: flex; } .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: none; justify-content: center; align-items: center; z-index: 1000; } .modal-content { background: rgba(20, 20, 20, 0.95); border-radius: 12px; padding: 20px; width: 350px; border: 1px solid rgba(255, 255, 255, 0.1); } .modal-title { display: flex; align-items: center; gap: 10px; margin-bottom: 15px; } .modal-title i { color: #ff3e3e; font-size: 20px; } .modal-title-text { color: #fff; font-size: 18px; font-weight: 500; } .modal-text { color: rgba(255, 255, 255, 0.7); font-size: 14px; line-height: 1.5; margin-bottom: 20px; } .modal-buttons { display: flex; gap: 10px; justify-content: flex-end; } .modal-button { padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; transition: all 0.2s ease; font-size: 14px; } .modal-button.confirm { background: #ff3e3e; color: #fff; } .modal-button.cancel { background: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.8); } .modal-button:hover { transform: translateY(-2px); } .modal-overlay.show { display: flex; } @media screen and (max-width: 768px) { .modal-content { width: 90%; max-width: 350px; } } .status-controls { display: flex; align-items: center; gap: 10px; margin-left: auto; } .clear-chat-button { background: rgba(255, 0, 0, 0.1); border: none; border-radius: 8px; padding: 8px 15px; color: #ff3e3e; cursor: pointer; transition: all 0.3s ease; display: none; align-items: center; gap: 8px; font-size: 14px; order: -1; } .clear-chat-button.show { display: flex; } .status-selector { margin-left: 0; } .active-reply-preview { background: rgba(44, 95, 255, 0.1); border-left: 3px solid var(--neox-primary); padding: 12px; margin: 0 0 10px 0; border-radius: 8px; position: relative; animation: slideDown 0.3s ease; } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .active-reply-preview .reply-info { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; color: var(--neox-primary); font-size: 14px; } .active-reply-preview .reply-info strong { font-weight: 600; } .active-reply-preview .reply-text { color: rgba(255, 255, 255, 0.7); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: 24px; } .cancel-reply { margin-left: auto; background: none; border: none; color: rgba(255, 255, 255, 0.5); cursor: pointer; padding: 4px; border-radius: 50%; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; } .cancel-reply:hover { background: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.8); transform: rotate(90deg); } @media screen and (max-width: 768px) { .active-reply-preview { padding: 10px; margin-bottom: 8px; } .active-reply-preview .reply-info { font-size: 13px; } .active-reply-preview .reply-text { font-size: 12px; padding-left: 20px; } } @media screen and (max-width: 480px) { .active-reply-preview { padding: 8px; margin-bottom: 6px; } .active-reply-preview .reply-info { font-size: 12px; gap: 6px; } .active-reply-preview .reply-text { padding-left: 16px; } .cancel-reply { width: 20px; height: 20px; } }