/* Loading overlay styling */ #loading-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 9999; align-items: center; justify-content: center; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); opacity: 0; transition: opacity 0.4s ease; } #loading-overlay.show { display: flex; opacity: 1; } /* Restart banner */ #restartBanner { display: none; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Custom select2 styling to match Tailwind */ .select2-container--default .select2-selection--multiple { border: 1px solid #d1d5db; border-radius: 0.375rem; padding: 0.25rem 0.5rem; min-height: 42px; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #3b82f6; border: 1px solid #3b82f6; color: white; border-radius: 0.25rem; padding: 0 0.5rem; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: white; margin-right: 0.25rem; } /* Custom modal styling */ .modal-content { box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } body.modal-open { overflow: hidden !important; } /* Custom tooltip styling */ .tooltip { position: relative; display: inline-block; } .tooltip .tooltip-text { visibility: hidden; width: 200px; background-color: #333; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -100px; opacity: 0; transition: opacity 0.3s; } .tooltip:hover .tooltip-text { visibility: visible; opacity: 1; } /* Custom mark styling for search highlights */ mark { background-color: #fef08a; padding: 0.1em 0em 0.1em 0.2em; border-radius: 0.25em; } /* Toast notifications */ #toast-container { position: fixed; top: 1.5rem; right: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; z-index: 10000; pointer-events: none; } .toast { min-width: 240px; max-width: 360px; padding: 0.75rem 1rem; border-radius: 0.5rem; color: #fff; font-weight: 500; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); opacity: 0; transform: translateY(-6px); transition: opacity 0.25s ease, transform 0.25s ease; } .toast.show { opacity: 1; transform: translateY(0); } .toast-success { background-color: #047857; } .toast-error { background-color: #b91c1c; } .toast-info { background-color: #1d4ed8; } .toast-warning { background-color: #d97706; } .toast-ban-event { background-color: #7f1d1d; pointer-events: auto; cursor: pointer; } .toast-ban-event:hover { background-color: #991b1b; transform: translateY(-2px); box-shadow: 0 15px 20px -3px rgba(0, 0, 0, 0.15); } /* Backend Status Indicator */ #backendStatus { display: flex; align-items: center; gap: 0.5rem; padding: 0.25rem 0.5rem; margin-left: 5px; border-radius: 0.25rem; /* background-color: rgba(255, 255, 255, 0.1); */ transition: background-color 0.2s ease; } /*#backendStatus:hover { background-color: rgba(255, 255, 255, 0.15); }*/ #statusDot { width: 0.5rem; height: 0.5rem; border-radius: 50%; display: inline-block; transition: background-color 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); animation: pulse 2s infinite; } #statusDot.bg-green-500 { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); animation: pulseGreen 2s infinite; } #statusDot.bg-yellow-500 { box-shadow: 0 0 0 0 rgba(234, 179, 8, 0.7); animation: pulseYellow 2s infinite; } #statusDot.bg-red-500 { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); animation: pulseRed 2s infinite; } #statusDot.bg-gray-400 { animation: none; } #statusText { font-size: 0.75rem; font-weight: 500; color: rgba(255, 255, 255, 0.9); white-space: nowrap; } @keyframes pulseGreen { 0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); } 70% { box-shadow: 0 0 0 4px rgba(34, 197, 94, 0); } 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); } } @keyframes pulseYellow { 0% { box-shadow: 0 0 0 0 rgba(234, 179, 8, 0.7); } 70% { box-shadow: 0 0 0 4px rgba(234, 179, 8, 0); } 100% { box-shadow: 0 0 0 0 rgba(234, 179, 8, 0); } } @keyframes pulseRed { 0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7); } 70% { box-shadow: 0 0 0 4px rgba(239, 68, 68, 0); } 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); } } /* Clock Display */ #clockDisplay { display: flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 0.25rem; background-color: rgba(255, 255, 255, 0.1); transition: background-color 0.2s ease; } #clockDisplay:hover { background-color: rgba(255, 255, 255, 0.15); } #clockTime { font-family: 'Courier New', Courier, monospace; font-size: 0.875rem; font-weight: 600; color: rgba(255, 255, 255, 0.95); letter-spacing: 0.05em; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } /* Mobile responsive adjustments */ @media (max-width: 768px) { #backendStatus { padding: 0.125rem 0.375rem; } #statusText { font-size: 0.625rem; } #clockDisplay { padding: 0.125rem 0.5rem; } #clockTime { font-size: 0.75rem; } } #advancedMikrotikFields, #advancedPfSenseFields { padding: 10px; }