/* ==================== PWA STYLES ==================== */ /* PWA Install Button */ .pwa-install-button { position: fixed; bottom: 30px; right: 30px; z-index: 1000; display: flex; align-items: center; gap: 10px; padding: 14px 24px; background: var(--accent-yellow); color: #000; border: none; border-radius: 50px; font-size: 15px; font-weight: 600; cursor: pointer; box-shadow: 0 10px 40px rgba(227, 245, 20, 0.3); transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); opacity: 0; transform: translateY(20px) scale(0.9); pointer-events: none; } .pwa-install-button.visible { opacity: 1; transform: translateY(0) scale(1); pointer-events: all; } .pwa-install-button:hover { transform: translateY(-2px) scale(1.05); box-shadow: 0 15px 50px rgba(227, 245, 20, 0.4); } .pwa-install-button:active { transform: translateY(0) scale(0.98); } .pwa-install-button svg { width: 20px; height: 20px; } /* PWA Update Notification */ .pwa-update-notification { position: fixed; top: 20px; left: 50%; transform: translateX(-50%) translateY(-120%); z-index: 10000; background: rgba(0, 0, 0, 0.95); backdrop-filter: blur(20px); border: 1px solid rgba(227, 245, 20, 0.3); border-radius: 16px; padding: 0; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); max-width: 500px; width: 90%; } .pwa-update-notification.visible { transform: translateX(-50%) translateY(0); } .update-content { display: flex; align-items: center; gap: 16px; padding: 20px; position: relative; } .update-icon { font-size: 40px; flex-shrink: 0; } .update-text { flex: 1; } .update-text strong { color: var(--accent-yellow); font-size: 16px; display: block; margin-bottom: 4px; } .update-text p { color: #888; font-size: 13px; margin: 0; } .update-btn { padding: 10px 20px; background: var(--accent-yellow); color: #000; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; flex-shrink: 0; } .update-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(227, 245, 20, 0.3); } .update-dismiss { position: absolute; top: 10px; right: 10px; background: transparent; border: none; color: #666; font-size: 18px; cursor: pointer; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.2s ease; } .update-dismiss:hover { background: rgba(255, 255, 255, 0.1); color: #fff; } /* iOS Install Prompt */ .ios-install-prompt { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10000; background: rgba(0, 0, 0, 0.98); backdrop-filter: blur(20px); border-top: 1px solid rgba(255, 255, 255, 0.1); padding: 30px 20px; transform: translateY(100%); transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } .ios-install-prompt.visible { transform: translateY(0); } .ios-prompt-content { max-width: 500px; margin: 0 auto; position: relative; } .ios-prompt-close { position: absolute; top: -10px; right: 0; background: transparent; border: none; color: #666; font-size: 24px; cursor: pointer; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; } .ios-prompt-icon { text-align: center; margin-bottom: 15px; } .ios-prompt-content h3 { color: var(--accent-yellow); text-align: center; font-size: 20px; margin-bottom: 10px; } .ios-prompt-content p { color: #888; text-align: center; margin-bottom: 15px; } .ios-prompt-content ol { color: #fff; padding-left: 20px; font-size: 14px; line-height: 1.8; } .ios-prompt-content ol li { margin-bottom: 8px; } .ios-prompt-content ol strong { color: var(--accent-yellow); } /* PWA Mode Adjustments */ body.pwa-mode { /* Add any PWA-specific styles */ } /* iOS PWA Status Bar Spacing */ body.ios-pwa { padding-top: env(safe-area-inset-top); padding-bottom: env(safe-area-inset-bottom); } body.ios-pwa .navbar { padding-top: calc(env(safe-area-inset-top) + 20px); } /* Hide install button on mobile when already in PWA mode */ body.pwa-mode .pwa-install-button { display: none; } /* Mobile-specific adjustments */ @media (max-width: 768px) { .pwa-install-button { bottom: 20px; right: 20px; padding: 12px 20px; font-size: 14px; } .pwa-update-notification { top: 10px; width: 95%; } .update-content { flex-wrap: wrap; padding: 15px; } .update-btn { width: 100%; margin-top: 10px; } } /* Slideup animation for simple toast */ @keyframes slideUp { from { opacity: 0; transform: translate(-50%, 20px); } to { opacity: 1; transform: translate(-50%, 0); } }