:root { --bg-primary: #0a192f; --bg-secondary: #112240; --text-primary: #e6f1ff; --text-secondary: #8892b0; --border-color: #233554; --highlight: #64ffda; --card-bg: #112240; --nav-bg: #0a192f; --shadow: rgba(2, 12, 27, 0.7); --hover-bg: #233554; --button-bg: #64ffda; --button-hover: #64ffda90; --warning-bg: #112240; --warning-text: #ffd700; } html { -webkit-text-size-adjust: 100%; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; scroll-behavior: smooth; } body { background-color: var(--bg-primary); color: var(--text-primary); transition: all 0.3s ease; font-family: 'Inter', sans-serif; margin: 0; padding: 0; line-height: 1.5; overflow-x: hidden; width: 100%; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-on-load { animation: fadeInUp 0.6s ease-out forwards; opacity: 0; } .bg-gray-50 { background-color: var(--bg-primary) !important; } .bg-white, .package-card, nav, .counter, #chart { background-color: var(--card-bg) !important; color: var(--text-primary) !important; border: 1px solid var(--border-color); border-radius: 8px; overflow: hidden; } .container { max-width: 1280px !important; margin: 0 auto; padding: 0 2rem; width: 100%; max-width: 100%; padding-left: 1rem; padding-right: 1rem; } .shadow-sm { box-shadow: 0 2px 4px var(--shadow) !important; } .text-gray-600, .text-gray-800, .text-gray-900 { color: var(--text-secondary) !important; } .text-yellow-700 { color: var(--warning-text) !important; } .border { border-color: var(--border-color) !important; } .notifications-container { position: fixed; top: 20px; right: 20px; z-index: 1000; display: flex; flex-direction: column; gap: 10px; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); } .notifications-container.folded { transform: translateX(calc(100% - 40px)); } .notifications-toggle { position: absolute; left: -40px; top: 0; width: 40px; height: 40px; background-color: #1f6feb; border: none; border-radius: 8px 0 0 8px; color: white; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background-color 0.3s ease; } .notifications-toggle:hover { background-color: #1a5cc6; } .notifications-toggle svg { width: 20px; height: 20px; transition: transform 0.5s ease; } .notifications-container.folded .notifications-toggle svg { transform: rotate(180deg); } .notification { background-color: #1f6feb; color: white; box-shadow: 0 4px 6px var(--shadow); padding: 15px 20px; border-radius: 8px; animation: slideIn 0.5s ease-out forwards; display: flex; align-items: center; gap: 10px; width: 300px; transition: transform 0.5s ease, opacity 0.5s ease; } .notification.success { background-color: #238636; } .notification.warning { background-color: #9e6a03; } .notification.error { background-color: #da3633; } @keyframes slideIn { 0% { transform: translateX(100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } @keyframes slideOut { 0% { transform: translateX(0); opacity: 1; } 100% { transform: translateX(100%); opacity: 0; } } @keyframes unfoldBounce { 0% { transform: translateX(calc(100% - 40px)); } 60% { transform: translateX(-20px); } 100% { transform: translateX(0); } } .package-card { transition: transform 0.3s ease, box-shadow 0.3s ease; border: 1px solid var(--border-color); width: 100%; margin-bottom: 1rem; padding: 1rem; border-radius: 0.5rem; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .package-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } nav { backdrop-filter: blur(10px); background-color: rgba(10, 25, 47, 0.85) !important; } .text-blue-600 { color: var(--highlight) !important; } .api-box { background-color: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; padding: 20px; } input, select, textarea { background-color: var(--bg-secondary) !important; border: 1px solid var(--border-color); border-radius: 0.375rem; padding: 0.5rem 1rem; width: 100%; color: var(--text-primary) !important; margin-bottom: 1rem; -webkit-appearance: none; appearance: none; width: 100%; padding: 0.5rem; border: 1px solid #e5e7eb; border-radius: 0.375rem; font-size: 1rem; } input:focus, select:focus, textarea:focus { border-color: var(--highlight) !important; box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.2) !important; outline: none; } button { background-color: var(--button-bg); color: var(--bg-primary); padding: 0.5rem 1.5rem; border-radius: 0.375rem; font-weight: 600; transition: all 0.3s ease; border: none; cursor: pointer; -webkit-appearance: none; appearance: none; width: auto; display: inline-block; text-align: center; } button:hover { background-color: var(--button-hover); transform: translateY(-2px); } .nav-links { display: flex; align-items: center; } @media (max-width: 768px) { .nav-links { display: none; position: absolute; top: 100%; left: 0; width: 100%; background-color: var(--bg-secondary); padding: 1rem; flex-direction: column; } .nav-links.active { display: flex; } .nav-link { padding: 0.5rem 0; width: 100%; text-align: center; } } .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(5px); z-index: 9999; } .modal-container { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: var(--card-bg); padding: 2rem; border-radius: 12px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); z-index: 10000; width: 90%; max-width: 500px; text-align: center; } .modal-close-btn { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border-radius: 50%; background: #ff4444; color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 18px; border: none; } .modal-close-btn:hover { background: #ff0000; } .chart-container { width: 100%; height: 400px; background-color: var(--bg-secondary); border-radius: 12px; padding: 1rem; margin: 2rem 0; } #chart { width: 100%; height: 100%; } pre { white-space: pre-wrap; word-wrap: break-word; padding: 1rem; border-radius: 0.375rem; font-size: 0.875rem; line-height: 1.5; overflow-x: auto; max-width: 100%; margin: 0; background-color: var(--bg-primary); padding: 20px; border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-primary); font-family: 'Consolas', monospace; } code { color: var(--highlight); } .api-box { background-color: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; padding: 20px; margin: 15px 0; } .api-endpoint { background-color: var(--bg-primary); padding: 15px; border-radius: 6px; font-family: 'Consolas', monospace; margin: 10px 0; border: 1px solid var(--border-color); overflow-x: auto; } #loading { display: none; } #loading.show { display: block; } .animate-spin { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .mobile-menu-button { display: none; background: transparent; padding: 0.5rem; border: none; color: var(--text-primary); } .mobile-menu-button:hover { background-color: var(--hover-bg); transform: none; } .mobile-menu-button svg { width: 1.5rem; height: 1.5rem; } @media (max-width: 768px) { .mobile-menu-button { display: block; } } canvas#chart { width: 100% !important; height: 100% !important; background-color: transparent; border-radius: 8px; } .chart-container { position: relative; width: 100%; max-width: 800px; height: 400px; margin: 0 auto; padding: 1rem; background-color: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 12px; } @supports (-webkit-touch-callout: none) { button, .btn { -webkit-appearance: none; -moz-appearance: none; appearance: none; } input { -webkit-appearance: none; -moz-appearance: none; appearance: none; border-radius: 4px; } body { -webkit-overflow-scrolling: touch; } } @media screen and (max-width: 768px) { body { font-size: 16px; } .container { padding: 1rem; } .package-card { padding: 1rem; } button, .btn, input { font-size: 16px; padding: 0.75rem; } h1 { font-size: 1.5rem; line-height: 2rem; } h2 { font-size: 1.25rem; line-height: 1.75rem; } h3 { font-size: 1.125rem; line-height: 1.5rem; } p, li { font-size: 1rem; line-height: 1.5rem; } } @supports (-webkit-touch-callout: none) { input, button, .btn { padding: 0.75rem; font-size: 16px; } body { -webkit-overflow-scrolling: touch; } .nav-links { -webkit-overflow-scrolling: touch; } } @supports (padding: max(0px)) { .container { padding-left: max(1rem, env(safe-area-inset-left)); padding-right: max(1rem, env(safe-area-inset-right)); } } * { word-wrap: break-word; overflow-wrap: break-word; box-sizing: border-box; } .progress-bar { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(to right, var(--highlight), #4f46e5); z-index: 1000; width: 0; transition: width 0.3s ease; } .theme-toggle { position: fixed; top: 20px; right: 20px; width: 40px; height: 40px; border-radius: 50%; background: var(--card-bg); border: 2px solid var(--border-color); color: var(--text-primary); display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 100; transition: all 0.3s ease; } .theme-toggle:hover { transform: rotate(45deg); background: var(--hover-bg); } /* Logo Animation */ .logo-container { position: relative; padding-bottom: 4px; } .logo-underline { position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: var(--highlight); transition: width 0.3s ease; } .logo-container:hover .logo-underline { width: 100%; } /* Floating Action Button */ .floating-action-button { position: fixed; bottom: 30px; right: 30px; z-index: 100; } .fab-main { width: 56px; height: 56px; border-radius: 50%; background: var(--highlight); color: var(--bg-primary); border: none; display: flex; align-items: center; justify-content: center; font-size: 24px; cursor: pointer; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); transition: all 0.3s ease; } .fab-main:hover { transform: scale(1.1); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2); } .fab-options { position: absolute; bottom: 70px; right: 8px; display: flex; flex-direction: column; gap: 16px; opacity: 0; pointer-events: none; transition: all 0.3s ease; } .fab-option { width: 40px; height: 40px; border-radius: 50%; background: var(--card-bg); color: var(--text-primary); border: 2px solid var(--border-color); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; } .fab-option:hover { transform: scale(1.1); background: var(--hover-bg); } .floating-action-button:hover .fab-options { opacity: 1; pointer-events: all; transform: translateY(-10px); } /* Dark Mode Styles */ [data-theme="dark"] { --bg-primary: #1a1b1e; --bg-secondary: #2c2e33; --text-primary: #ffffff; --text-secondary: #a6a7ab; --border-color: #373a40; --highlight: #4656e5; --card-bg: #2c2e33; --nav-bg: #1a1b1e; --shadow: rgba(0, 0, 0, 0.4); --hover-bg: #373a40; } /* Mobile Menu Animation */ @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .mobile-menu-open { animation: slideDown 0.3s ease forwards; } /* Responsive Design Improvements */ @media screen and (max-width: 768px) { .nav-links { display: none; width: 100%; padding: 1rem 0; text-align: center; } .nav-links.active { display: flex; flex-direction: column; gap: 1rem; } .mobile-menu-button { display: block; } .theme-toggle { top: 10px; right: 10px; } } /* Timelapse Animation Keyframes */ @keyframes slideInFromLeft { 0% { transform: translateX(-100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } @keyframes slideInFromRight { 0% { transform: translateX(100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } @keyframes scaleUp { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } @keyframes fadeInStagger { 0% { opacity: 0; transform: translateY(30px); } 100% { opacity: 1; transform: translateY(0); } } /* Enhanced Animation Classes */ .animate-on-load { opacity: 0; animation: fadeInUp 0.8s ease-out forwards; animation-delay: calc(var(--animation-order, 0) * 0.1s); } nav.animate-on-load { animation: slideInFromLeft 1s ease-out forwards; } #services .bg-white { animation: slideInFromRight 1s ease-out forwards; animation-delay: 0.3s; } .package-card { animation: scaleUp 0.8s ease-out forwards; animation-delay: calc(var(--card-order, 0) * 0.2s); } /* Enhanced Hover Animations */ .nav-link { position: relative; transition: all 0.3s ease !important; } .nav-link:hover { color: var(--highlight) !important; transform: translateY(-2px); } button, .button, input[type="submit"], input[type="button"] { transition: all 0.3s ease !important; cursor: pointer; } button:hover, .button:hover, input[type="submit"]:hover, input[type="button"]:hover { transform: translateY(-2px) !important; background-color: var(--button-hover) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2) !important; } .announcement-item { transition: all 0.3s ease !important; } .package-card { transition: all 0.3s ease !important; } .package-card:hover { transform: translateY(-5px) !important; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3) !important; border-color: var(--highlight) !important; } .mobile-menu-button { transition: all 0.3s ease !important; } .mobile-menu-button:hover { background-color: var(--hover-bg) !important; transform: rotate(90deg) !important; } input[type="text"], input[type="number"], input[type="email"], input[type="password"], textarea, select { transition: all 0.3s ease !important; } input[type="text"]:hover, input[type="number"]:hover, input[type="email"]:hover, input[type="password"]:hover, textarea:hover, select:hover { border-color: var(--highlight) !important; box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.15) !important; } .nav-link { position: relative; transition: color 0.3s ease; } .nav-link::after { content: ''; position: absolute; width: 0; height: 2px; bottom: -4px; left: 0; background-color: var(--highlight); transition: width 0.3s ease; } .nav-link:hover::after { width: 100%; } .package-card { transition: transform 0.3s ease, box-shadow 0.3s ease; } .package-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(2, 12, 27, 0.2); } #announcements { margin-bottom: 2rem; } .announcement-header { background-color: var(--bg-secondary); border-bottom: 1px solid var(--border-color); } .announcement-content { max-height: 300px; overflow-y: auto; background-color: var(--bg-secondary); } .announcement-item { position: relative; padding: 1rem 1.5rem; border-bottom: 1px solid var(--border-color); transition: all 0.3s ease; background-color: var(--bg-secondary); } .announcement-item:last-child { border-bottom: none; } .announcement-item:hover { background-color: var(--hover-bg); } .announcement-item .flex-1 h3 { color: var(--text-primary); font-size: 1rem; margin-bottom: 0.5rem; } .announcement-item .flex-1 p { color: var(--text-secondary); font-size: 0.875rem; line-height: 1.5; } .announcement-item .text-blue-200 { color: var(--text-secondary) !important; font-size: 0.75rem; } .announcement-item span.bg-yellow-400, .announcement-item span.bg-blue-200, .announcement-item span.bg-green-200 { background-color: var(--highlight) !important; color: var(--bg-primary) !important; padding: 0.25rem 0.75rem; font-weight: 600; font-size: 0.75rem; } #toggleAnnouncements { background: transparent; border: none; padding: 0.5rem; border-radius: 0.375rem; transition: all 0.3s ease; } #toggleAnnouncements:hover { background-color: var(--hover-bg); } #toggleAnnouncements svg { width: 1.25rem; height: 1.25rem; color: var(--text-primary); transition: transform 0.3s ease; } #toggleAnnouncements:hover svg { transform: rotate(180deg); color: var(--highlight); } .announcement-content::-webkit-scrollbar { width: 6px; } .announcement-content::-webkit-scrollbar-track { background: var(--bg-secondary); } .announcement-content::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 3px; transition: background 0.3s ease; } .announcement-content::-webkit-scrollbar-thumb:hover { background: var(--highlight); } .announcement-header { transition: all 0.3s ease !important; } .announcement-header:hover { background-color: rgba(255, 255, 255, 0.1) !important; } #toggleAnnouncements { transition: all 0.3s ease !important; } #toggleAnnouncements:hover { transform: translateY(-2px) !important; color: var(--highlight) !important; } #toggleAnnouncements svg { transition: transform 0.3s ease !important; } #toggleAnnouncements:hover svg { transform: rotate(180deg) !important; } .announcement-item { position: relative !important; transition: all 0.3s ease !important; cursor: pointer !important; border-left: 4px solid transparent !important; } .announcement-item:hover { background-color: rgba(255, 255, 255, 0.1) !important; border-left-color: var(--highlight) !important; padding-left: 1.25rem !important; } .announcement-item .flex-1 { transition: transform 0.3s ease !important; } .announcement-item:hover .flex-1 { transform: translateX(5px) !important; } [data-theme="dark"] .announcement-container { background-color: var(--card-bg); border-color: var(--border-color); } [data-theme="dark"] .announcement-item { border-color: var(--border-color); } [data-theme="dark"] .announcement-item:hover { background-color: var(--hover-bg); } [data-theme="dark"] .announcement-content::-webkit-scrollbar-track { background: var(--bg-secondary); } [data-theme="dark"] .announcement-content::-webkit-scrollbar-thumb { background: var(--border-color); } [data-theme="dark"] .announcement-content::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } .announcement-header { position: relative; overflow: hidden; } .announcement-header::after { content: ''; position: absolute; top: 0; right: 0; width: 30%; height: 100%; background: linear-gradient(to left, rgba(255,255,255,0.1), transparent); transform: skewX(-20deg); animation: shimmer 3s infinite; } @keyframes shimmer { from { transform: translateX(-100%) skewX(-20deg); } to { transform: translateX(300%) skewX(-20deg); } }