/* App Container */ .app-container { display: flex; flex-direction: column; height: 100vh; width: 100%; overflow: hidden; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } /* Status Bar */ .status-bar { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 1rem; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-bottom: 1px solid rgba(255, 255, 255, 0.2); z-index: 100; } .status-bar.online { border-left: 4px solid var(--success-500); } .status-bar.offline { border-left: 4px solid var(--error-500); } .status-bar.checking { border-left: 4px solid var(--warning-500); } .status-dot { width: 8px; height: 8px; border-radius: 50%; animation: pulse 2s infinite; } .status-dot.online { background-color: var(--success-500); } .status-dot.offline { background-color: var(--error-500); } .status-dot.checking { background-color: var(--warning-500); } @keyframes pulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } } /* Main Content */ .main-content { display: flex; gap: 1rem; flex: 1; padding: 1rem; overflow: hidden; min-height: 0; } @media (max-width: 768px) { .main-content { flex-direction: column; gap: 0.5rem; padding: 0.5rem; } } /* Settings Button */ .settings-button { position: fixed; bottom: 1.5rem; right: 1.5rem; display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; border-radius: 9999px; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); border: 1px solid rgba(0, 0, 0, 0.1); color: var(--gray-900); font-weight: 500; font-size: 0.875rem; transition: all 0.2s ease; z-index: 40; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .settings-button:hover { background: rgba(255, 255, 255, 1); transform: translateY(-1px); box-shadow: 0 8px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } @media (max-width: 768px) { .settings-button { bottom: 1rem; right: 1rem; padding: 0.75rem; border-radius: 50%; } .settings-button span { display: none; } } /* Modal Styles */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 50; padding: 1rem; } .modal { background: white; border-radius: 1rem; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); max-width: 500px; width: 100%; max-height: 90vh; overflow: hidden; display: flex; flex-direction: column; } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1.5rem; border-bottom: 1px solid var(--gray-200); } .modal-header h2 { font-size: 1.25rem; font-weight: 600; color: var(--gray-900); } .modal-header button { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 50%; color: var(--gray-500); transition: all 0.2s; } .modal-header button:hover { background: var(--gray-100); color: var(--gray-700); } .modal-content { flex: 1; overflow-y: auto; padding: 1.5rem; } .modal-close-btn { padding: 1rem 1.5rem; background: var(--gray-50); border: none; font-weight: 500; color: var(--gray-700); transition: all 0.2s; border-top: 1px solid var(--gray-200); } .modal-close-btn:hover { background: var(--gray-100); } /* About Content */ .about-content { text-align: left; } .feature-list ul { list-style: none; padding: 0; } .tech-badge { display: inline-block; padding: 0.25rem 0.5rem; background: var(--gray-100); color: var(--gray-700); font-size: 0.75rem; font-weight: 500; border-radius: 9999px; border: 1px solid var(--gray-200); } /* Responsive adjustments */ @media (max-width: 640px) { .modal { margin: 0.5rem; max-height: calc(100vh - 1rem); } .modal-header { padding: 1rem; } .modal-content { padding: 1rem; } .modal-close-btn { padding: 0.75rem 1rem; } } /* Loading states */ .loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.8); display: flex; align-items: center; justify-content: center; z-index: 10; } .loading-spinner { width: 40px; height: 40px; border: 3px solid var(--gray-200); border-top: 3px solid var(--primary-500); border-radius: 50%; animation: spin 1s linear infinite; } /* Error and Success Messages */ .message-bar { position: fixed; top: 1rem; left: 50%; transform: translateX(-50%); padding: 0.75rem 1rem; border-radius: 0.5rem; font-weight: 500; font-size: 0.875rem; z-index: 60; animation: slideDown 0.3s ease-out; display: flex; align-items: center; gap: 0.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .message-bar.error { background: var(--error-500); color: white; } .message-bar.success { background: var(--success-500); color: white; } @keyframes slideDown { from { opacity: 0; transform: translateX(-50%) translateY(-100%); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } /* Print styles */ @media print { .settings-button, .status-bar, .modal-overlay { display: none !important; } }