.header-section { margin-bottom: 20px; } .header-svg { width: 100%; height: 150px; } .svg-text { text-anchor: middle; dominant-baseline: middle; font-size: 60px; stroke-width: 1.5; fill: none; stroke: #06b6d4; transition: stroke 0.3s ease-in-out, fill 0.3s ease-in-out, transform 0.3s ease-in-out; font-family: 'El Messiri', 'Segoe UI', Arial, sans-serif; } /* Wave Stroke动画 */ .wave-stroke .svg-text { stroke-dasharray: 60 60; animation: waveStroke 2.5s ease-in-out infinite; } @keyframes waveStroke { 0% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 120; } } /* 响应式设计 */ @media (max-width: 768px) { .svg-text { font-size: 40px; } .header-svg { height: 100px; } } /* 深色模式 */ .dark .svg-text { stroke: #38bdf8; } /* 动画效果 */ @keyframes futuristicGlow { 0% { text-shadow: 0 0 10px rgba(6, 182, 212, 0.5); } 50% { text-shadow: 0 0 20px rgba(6, 182, 212, 0.8); } 100% { text-shadow: 0 0 10px rgba(6, 182, 212, 0.5); } } @keyframes winGlow { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } } @keyframes lossZap { 0% { transform: rotate(0deg); } 25% { transform: rotate(-15deg); } 75% { transform: rotate(15deg); } 100% { transform: rotate(0deg); } } @keyframes pendingOrbit { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* 小点动画 */ .small-dot { position: absolute; width: 4px; height: 4px; background: rgba(6, 182, 212, 0.5); border-radius: 50%; animation: dotPulse 2s infinite; } @keyframes dotPulse { 0% { transform: scale(1); opacity: 0.5; } 50% { transform: scale(1.5); opacity: 0.8; } 100% { transform: scale(1); opacity: 0.5; } } /* 卡片样式 */ .card { position: relative; background: rgba(255, 255, 255, 0.95); border-radius: 15px; box-shadow: 0 8px 32px rgba(6, 182, 212, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(6, 182, 212, 0.2); } .dashboard-card { background: rgba(255, 255, 255, 0.9); padding: 15px; border-radius: 10px; box-shadow: 0 4px 15px rgba(6, 182, 212, 0.08); border: 1px solid rgba(6, 182, 212, 0.15); transition: transform 0.2s; } .dashboard-card:hover { transform: translateY(-2px); } .history-item { background: rgba(255, 255, 255, 0.95); padding: 15px; margin-bottom: 10px; border-radius: 10px; box-shadow: 0 4px 15px rgba(6, 182, 212, 0.05); border: 1px solid rgba(6, 182, 212, 0.1); transition: transform 0.2s; } .history-item:hover { transform: translateX(5px); } .navigation { position: fixed; bottom: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border-top: 1px solid rgba(6, 182, 212, 0.2); z-index: 1000; padding: 0 8px; transition: all 0.3s ease; } .dark .navigation { background: rgba(17, 24, 39, 0.95); border-top: 1px solid rgba(6, 182, 212, 0.3); } .nav-item { display: flex; flex-direction: column; align-items: center; padding: 8px 12px; text-decoration: none; transition: all 0.3s; min-width: 60px; position: relative; overflow: hidden; } .nav-item::after { content: ''; position: absolute; bottom: 0; left: 50%; width: 0; height: 3px; background: #06b6d4; transition: all 0.3s ease; transform: translateX(-50%); } .nav-item.active::after { width: 100%; } .nav-item i { transition: all 0.3s ease; transform: translateY(0); } .nav-item.active i { transform: translateY(-5px); animation: navIconBounce 0.5s ease; } @keyframes navIconBounce { 0% { transform: translateY(0); } 50% { transform: translateY(-8px); } 100% { transform: translateY(-5px); } } /* Dark mode styles */ .dark { background-color: #111827; color: #f3f4f6; } .dark .card { background: rgba(31, 41, 55, 0.95); border-color: rgba(6, 182, 212, 0.3); } .dark .dashboard-card { background: rgba(31, 41, 55, 0.9); border-color: rgba(6, 182, 212, 0.25); } .dark .text-cyan-500 { color: #06b6d4; } .dark .text-gray-400 { color: #9ca3af; } .dark .bg-cyan-50 { background-color: rgba(6, 182, 212, 0.1); } .dark .text-cyan-700 { color: #06b6d4; } .dark .text-cyan-600 { color: #06b6d4; } .dark .bg-cyan-100 { background-color: rgba(6, 182, 212, 0.2); } /* Home section dark mode styles */ .dark .period-result-card { background: rgba(31, 41, 55, 0.98); border-color: rgba(6, 182, 212, 0.3); } .dark .period-result-box { background: rgba(31, 41, 55, 0.9); } .dark .period-result-box p { color: #f3f4f6; } .dark .period-result-box h2 { color: #06b6d4; } .dark .period-result-box i { color: #06b6d4; } /* History section dark mode styles - keeping status icons in original colors */ .dark .history-item { background: rgba(31, 41, 55, 0.95); border-color: rgba(6, 182, 212, 0.2); } .dark .history-item:hover { background: rgba(31, 41, 55, 0.98); transform: translateX(5px); } .dark .history-item .period-value { color: #f3f4f6; } .dark .history-item .prediction-value { color: #f3f4f6; } .dark .history-item .text-cyan-600 { color: #06b6d4; } .dark .history-item .text-cyan-800 { color: #06b6d4; } .dark .history-item .bg-cyan-100 { background-color: rgba(6, 182, 212, 0.2); } /* Status icons - keeping original colors in dark mode */ .dark .history-item .status-icon { background-color: rgba(255, 255, 255, 0.1); } .dark .history-item .status-icon i { color: inherit !important; } .dark .history-item .win-animation i { color: #10b981 !important; } .dark .history-item .loss-animation i { color: #ef4444 !important; } .dark .history-item .pending-animation i { color: #f59e0b !important; } /* Status icon backgrounds - keeping original colors in dark mode */ .dark .history-item .bg-green-100 { background-color: rgba(16, 185, 129, 0.1) !important; } .dark .history-item .bg-red-100 { background-color: rgba(239, 68, 68, 0.1) !important; } .dark .history-item .bg-yellow-100 { background-color: rgba(245, 158, 11, 0.1) !important; } /* Confidence meter dark mode styles */ .dark .confidence-meter { background: rgba(6, 182, 212, 0.1); } .dark .confidence-fill { background: linear-gradient(90deg, #06b6d4, #0891b2); } /* Server status dark mode styles */ .dark .server-status-indicator { background-color: #06b6d4; } .dark .server-status-text { color: #f3f4f6; } /* Dashboard stats dark mode styles */ .dark .dashboard-stats p { color: #f3f4f6; } .dark .dashboard-stats .text-cyan-600 { color: #06b6d4; } .dark .dashboard-stats .text-cyan-800 { color: #06b6d4; } /* Small dots animation dark mode styles */ .dark .small-dot { background: rgba(6, 182, 212, 0.3); } .content-section { display: none; } .content-section.active { display: block; } .pulse-animation { animation: futuristicGlow 2s infinite; } .win-animation { animation: winGlow 1.5s infinite; } .loss-animation { animation: lossZap 0.8s infinite; } .pending-animation { animation: pendingOrbit 2s linear infinite; } .confidence-meter { width: 100%; height: 8px; background: rgba(6, 182, 212, 0.1); border-radius: 4px; overflow: hidden; margin: 8px 0; } .confidence-fill { height: 100%; background: linear-gradient(90deg, #06b6d4, #0891b2); border-radius: 4px; transition: width 0.3s ease; } .confidence-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 10px; font-weight: bold; text-shadow: 0 0 2px rgba(0, 0, 0, 0.5); white-space: nowrap; } @keyframes draw { 0% { stroke-dashoffset: 1000; } 50% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: -1000; } } .mode-toggle { position: relative; display: inline-block; width: 60px; height: 30px; } .mode-toggle input { opacity: 0; width: 0; height: 0; } .mode-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; border-radius: 34px; } .mode-slider:before { position: absolute; content: ""; height: 22px; width: 22px; left: 4px; bottom: 4px; background-color: white; transition: .4s; border-radius: 50%; } .mode-toggle input:checked + .mode-slider { background-color: #06b6d4; } .mode-toggle input:checked + .mode-slider:before { transform: translateX(30px); } .mode-icons { position: absolute; top: 50%; transform: translateY(-50%); width: 100%; display: flex; justify-content: space-between; padding: 0 8px; pointer-events: none; } .mode-icons i { color: white; font-size: 12px; } /* Custom Scrollbar Styles */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: rgba(6, 182, 212, 0.1); border-radius: 4px; } ::-webkit-scrollbar-thumb { background: rgba(6, 182, 212, 0.3); border-radius: 4px; transition: all 0.3s ease; } ::-webkit-scrollbar-thumb:hover { background: rgba(6, 182, 212, 0.5); } /* Dark mode scrollbar styles */ .dark ::-webkit-scrollbar-track { background: rgba(6, 182, 212, 0.05); } .dark ::-webkit-scrollbar-thumb { background: rgba(6, 182, 212, 0.2); } .dark ::-webkit-scrollbar-thumb:hover { background: rgba(6, 182, 212, 0.4); } /* Firefox scrollbar styles */ * { scrollbar-width: thin; scrollbar-color: rgba(6, 182, 212, 0.3) rgba(6, 182, 212, 0.1); } .dark * { scrollbar-color: rgba(6, 182, 212, 0.2) rgba(6, 182, 212, 0.05); } /* Home section period and prediction dark mode styles */ .dark .card.mb-4.overflow-hidden.gradient-bg.animate__animated.animate__zoomIn.relative { background: rgba(31, 41, 55, 0.95); border-color: rgba(6, 182, 212, 0.3); } .dark .bg-white.bg-opacity-95.p-6.rounded-lg.pulse-animation { background: rgba(31, 41, 55, 0.95) !important; } .dark .text-2xl.font-semibold.text-cyan-700.bg-cyan-50.p-3.rounded-lg.shadow-inner { background: rgba(6, 182, 212, 0.1) !important; color: #f3f4f6 !important; } .dark .text-cyan-500.text-sm { color: #06b6d4 !important; } .dark .text-cyan-700.text-sm.mt-1 { color: #06b6d4 !important; } .dark .text-cyan-600 { color: #06b6d4 !important; } .dark .text-cyan-800 { color: #06b6d4 !important; } .dark .text-yellow-500.animate-pulse { color: #f59e0b !important; } .dark .text-red-500.animate-pulse { color: #ef4444 !important; } .dark .confidence-meter { background: rgba(6, 182, 212, 0.1) !important; } .dark .confidence-fill { background: linear-gradient(90deg, #06b6d4, #0891b2) !important; } .dark .period-id { color: #f3f4f6 !important; } .dark .text-cyan-700.bg-cyan-50 { background: rgba(6, 182, 212, 0.1) !important; color: #f3f4f6 !important; } .dark .shadow-inner { box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.2) !important; } /* Language selector dark mode styles */ .dark select#languageSelect { background-color: rgba(31, 41, 55, 0.95) !important; color: #f3f4f6 !important; border-color: rgba(6, 182, 212, 0.3) !important; } .dark select#languageSelect option { background-color: rgba(31, 41, 55, 0.95) !important; color: #f3f4f6 !important; } .dark select#languageSelect:focus { border-color: #06b6d4 !important; box-shadow: 0 0 0 2px rgba(6, 182, 212, 0.2) !important; } /* Ensure the select arrow is visible in dark mode */ .dark select#languageSelect { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2306b6d4'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 0.5rem center !important; background-size: 1.5em 1.5em !important; padding-right: 2.5rem !important; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; } /* Chart containers 美化 */ .chart-container-pie { box-shadow: 0 4px 16px 0 rgba(6,182,212,0.10), 0 1.5px 4px 0 rgba(6,182,212,0.08); border-radius: 1rem; background: linear-gradient(135deg, #f0fdfa 0%, #e0f2fe 100%); transition: box-shadow 0.3s; } .chart-container-pie:hover { box-shadow: 0 8px 24px 0 rgba(6,182,212,0.18), 0 2px 8px 0 rgba(6,182,212,0.12); } .chart-container-line { box-shadow: 0 4px 16px 0 rgba(6,182,212,0.10), 0 1.5px 4px 0 rgba(6,182,212,0.08); border-radius: 1rem; background: linear-gradient(135deg, #f0fdfa 0%, #e0f2fe 100%); transition: box-shadow 0.3s; } .chart-container-line:hover { box-shadow: 0 8px 24px 0 rgba(6,182,212,0.18), 0 2px 8px 0 rgba(6,182,212,0.12); } .dark .chart-container-pie, .dark .chart-container-line { background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); } /* Chart.js legend 美化 */ .chartjs-render-monitor + .chartjs-legend { margin-top: 0.5rem; text-align: center; } /* Chart canvas 美化 */ #performanceChart, #lineChart { background: transparent; border-radius: 0.75rem; } #customConfirm .dark & { background: #1e293b !important; color: #f3f4f6 !important; } #customConfirm > div { transition: background 0.2s, color 0.2s; } #customConfirm .dark button#customConfirmNo { background: #374151 !important; color: #f3f4f6 !important; } .switch-toggle { position: relative; display: inline-block; width: 48px; height: 26px; margin-left: 10px; vertical-align: middle; } .switch-toggle input { opacity: 0; width: 0; height: 0; } .slider-toggle { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #e5e7eb; transition: .4s; border-radius: 26px; } .slider-toggle:before { position: absolute; content: ""; height: 20px; width: 20px; left: 3px; bottom: 3px; background-color: #fff; transition: .4s; border-radius: 50%; box-shadow: 0 1px 4px rgba(0,0,0,0.12); } .switch-toggle input:checked + .slider-toggle { background-color: #06b6d4; } .switch-toggle input:checked + .slider-toggle:before { transform: translateX(22px); background-color: #38bdf8; } .dark .slider-toggle { background-color: #374151; } .dark .switch-toggle input:checked + .slider-toggle { background-color: #38bdf8; } .dark .switch-toggle input:checked + .slider-toggle:before { background-color: #1e293b; } .chart-container-bar, .chart-container-trend { box-shadow: 0 4px 16px 0 rgba(6,182,212,0.10), 0 1.5px 4px 0 rgba(6,182,212,0.08); border-radius: 1rem; background: linear-gradient(135deg, #f0fdfa 0%, #e0f2fe 100%); transition: box-shadow 0.3s; } .chart-container-bar:hover, .chart-container-trend:hover { box-shadow: 0 8px 24px 0 rgba(6,182,212,0.18), 0 2px 8px 0 rgba(6,182,212,0.12); } .dark .chart-container-bar, .dark .chart-container-trend { background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); }