Spaces:
Sleeping
Sleeping
| /* Reset and Base Styles */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| /* InfraVision AI - White Theme & Enhanced Animations */ | |
| :root { | |
| /* Primary Brand Colors - White Theme */ | |
| --primary: #2563eb; | |
| --primary-dark: #1d4ed8; | |
| --primary-light: #3b82f6; | |
| --secondary: #64748b; | |
| --secondary-light: #94a3b8; | |
| --secondary-dark: #475569; | |
| /* Creative Accent Colors */ | |
| --accent-purple: #8b5cf6; | |
| --accent-blue: #3b82f6; | |
| --accent-cyan: #06b6d4; | |
| --accent-green: #10b981; | |
| --accent-orange: #f59e0b; | |
| --accent-pink: #ec4899; | |
| --accent-indigo: #6366f1; | |
| --accent-teal: #14b8a6; | |
| /* Infrastructure Theme Colors */ | |
| --steel-blue: #1e40af; | |
| --concrete-gray: #6b7280; | |
| --construction-orange: #f97316; | |
| --alert-red: #ef4444; | |
| --success-green: #22c55e; | |
| --warning-yellow: #eab308; | |
| /* White Theme Background Colors */ | |
| --bg-primary: #ffffff; | |
| --bg-secondary: #f8fafc; | |
| --bg-tertiary: #f1f5f9; | |
| --bg-quaternary: #e2e8f0; | |
| --bg-light: #fefefe; | |
| --bg-white: #ffffff; | |
| --bg-gray-50: #f9fafb; | |
| --bg-gray-100: #f3f4f6; | |
| /* Text Colors for White Theme */ | |
| --text-primary: #0f172a; | |
| --text-secondary: #475569; | |
| --text-tertiary: #64748b; | |
| --text-muted: #94a3b8; | |
| --text-light: #cbd5e1; | |
| /* Enhanced Glass-morphism for White Theme */ | |
| --glass-bg: rgba(255, 255, 255, 0.8); | |
| --glass-bg-strong: rgba(255, 255, 255, 0.9); | |
| --glass-bg-subtle: rgba(255, 255, 255, 0.6); | |
| --glass-border: rgba(59, 130, 246, 0.15); | |
| --glass-border-light: rgba(59, 130, 246, 0.1); | |
| --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); | |
| --glass-shadow-strong: 0 16px 40px rgba(0, 0, 0, 0.15); | |
| --glass-shadow-subtle: 0 4px 16px rgba(0, 0, 0, 0.05); | |
| /* Creative Gradients for White Theme */ | |
| --gradient-primary: linear-gradient(135deg, var(--primary), var(--accent-blue)); | |
| --gradient-hero: linear-gradient(135deg, #ffffff 0%, #f8fafc 50%, #f1f5f9 100%); | |
| --gradient-infra: linear-gradient(135deg, var(--steel-blue), var(--accent-cyan)); | |
| --gradient-feature: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%); | |
| --gradient-card: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(248, 250, 252, 0.8) 100%); | |
| /* Animation Variables */ | |
| --animation-duration-fast: 0.2s; | |
| --animation-duration-normal: 0.3s; | |
| --animation-duration-slow: 0.5s; | |
| --animation-duration-extra-slow: 0.8s; | |
| --animation-easing: cubic-bezier(0.4, 0, 0.2, 1); | |
| --animation-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55); | |
| --animation-easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94); | |
| /* Floating Animation Variables */ | |
| --float-distance: 20px; | |
| --float-duration: 6s; | |
| --pulse-scale: 1.05; | |
| --hover-scale: 1.02; | |
| --hover-lift: -8px; | |
| --gradient-ai: linear-gradient(135deg, var(--accent-purple), var(--accent-pink)); | |
| --gradient-overlay: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(139, 92, 246, 0.1)); | |
| /* Enhanced Border Radius */ | |
| --border-radius: 8px; | |
| --border-radius-lg: 12px; | |
| --border-radius-xl: 16px; | |
| --border-radius-2xl: 24px; | |
| --border-radius-full: 9999px; | |
| /* Enhanced Transitions */ | |
| --transition-fast: 0.15s ease; | |
| --transition-medium: 0.3s ease; | |
| --transition-slow: 0.5s ease; | |
| --transition-bounce: 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); | |
| } | |
| /* ============================================ */ | |
| /* PROFESSIONAL ANIMATION KEYFRAMES */ | |
| /* ============================================ */ | |
| /* Subtle Professional Animations */ | |
| @keyframes fadeIn { | |
| 0% { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes slideIn { | |
| 0% { | |
| opacity: 0; | |
| transform: translateX(-20px); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes subtleGlow { | |
| 0%, 100% { | |
| box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1); | |
| } | |
| 50% { | |
| box-shadow: 0 4px 16px rgba(59, 130, 246, 0.2); | |
| } | |
| } | |
| @keyframes gradientShift { | |
| 0%, 100% { | |
| background-position: 0% 50%; | |
| } | |
| 50% { | |
| background-position: 100% 50%; | |
| } | |
| } | |
| /* ============================================ */ | |
| /* PROFESSIONAL UI ELEMENTS */ | |
| /* ============================================ */ | |
| .subtle-accent { | |
| color: var(--accent-blue); | |
| font-weight: 600; | |
| opacity: 0.8; | |
| } | |
| /* ============================================ */ | |
| /* BASE STYLES - WHITE THEME */ | |
| /* ============================================ */ | |
| body { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| overflow-x: hidden; | |
| position: relative; | |
| } | |
| body::before { | |
| content: ''; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: | |
| radial-gradient(circle at 20% 80%, rgba(59, 130, 246, 0.08) 0%, transparent 50%), | |
| radial-gradient(circle at 80% 20%, rgba(139, 92, 246, 0.06) 0%, transparent 50%), | |
| radial-gradient(circle at 40% 40%, rgba(16, 185, 129, 0.04) 0%, transparent 50%), | |
| linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, rgba(248, 250, 252, 0.8) 100%); | |
| z-index: -2; | |
| pointer-events: none; | |
| } | |
| body::after { | |
| content: ''; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: | |
| url('data:image/svg+xml,<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><defs><pattern id="smallGrid" width="8" height="8" patternUnits="userSpaceOnUse"><path d="M 8 0 L 0 0 0 8" fill="none" stroke="%233b82f6" stroke-width="0.5" opacity="0.1"/></pattern></defs><rect width="100%" height="100%" fill="url(%23smallGrid)" /></svg>'); | |
| z-index: -1; | |
| pointer-events: none; | |
| opacity: 0.3; | |
| } | |
| @keyframes shimmer { | |
| 0% { background-position: -1000px 0; } | |
| 100% { background-position: 1000px 0; } | |
| } | |
| @keyframes spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes gradientShift { | |
| 0%, 100% { | |
| background: | |
| radial-gradient(circle at 20% 20%, rgba(0, 212, 255, 0.1) 0%, transparent 40%), | |
| radial-gradient(circle at 80% 80%, rgba(139, 92, 246, 0.1) 0%, transparent 40%); | |
| } | |
| 33% { | |
| background: | |
| radial-gradient(circle at 60% 30%, rgba(0, 212, 255, 0.15) 0%, transparent 45%), | |
| radial-gradient(circle at 40% 70%, rgba(139, 92, 246, 0.15) 0%, transparent 45%); | |
| } | |
| 66% { | |
| background: | |
| radial-gradient(circle at 80% 60%, rgba(0, 212, 255, 0.12) 0%, transparent 42%), | |
| radial-gradient(circle at 20% 40%, rgba(139, 92, 246, 0.12) 0%, transparent 42%); | |
| } | |
| } | |
| @keyframes slideInLeft { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-50px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes slideIn { | |
| 0% { | |
| opacity: 0; | |
| transform: translateX(-20px); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes slideInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Theme Variables */ | |
| :root { | |
| /* Core Colors */ | |
| --primary: #3b82f6; | |
| --primary-dark: #1d4ed8; | |
| --secondary: #64748b; | |
| --accent-blue: #60a5fa; | |
| --accent-indigo: #818cf8; | |
| --accent-cyan: #22d3ee; | |
| --accent-azure: #38bdf8; | |
| /* Semantic Colors */ | |
| --success: #22c55e; | |
| --danger: #ef4444; | |
| --warning: #f59e0b; | |
| --info: #3b82f6; | |
| /* Background Colors */ | |
| --bg-primary: #ffffff; | |
| --bg-secondary: #f8fafc; | |
| --bg-tertiary: #f1f5f9; | |
| /* Glass Effects */ | |
| --glass-bg: rgba(255, 255, 255, 0.8); | |
| --glass-border: rgba(255, 255, 255, 0.3); | |
| --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); | |
| /* Gradients */ | |
| --gradient-blue: linear-gradient(135deg, #60a5fa, #3b82f6); | |
| --gradient-indigo: linear-gradient(135deg, #818cf8, #6366f1); | |
| --gradient-cyan: linear-gradient(135deg, #22d3ee, #0ea5e9); | |
| --gradient-azure: linear-gradient(135deg, #38bdf8, #0284c7); | |
| /* Border Radius */ | |
| --border-radius: 0.5rem; | |
| --border-radius-sm: 0.25rem; | |
| --border-radius-lg: 0.75rem; | |
| --border-radius-xl: 1rem; | |
| --border-radius-2xl: 1.5rem; | |
| /* Shadows */ | |
| --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); | |
| --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); | |
| --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); | |
| --shadow-glass: 0 8px 32px rgba(59, 130, 246, 0.1); | |
| /* Fonts */ | |
| --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto; | |
| /* Animation Speeds */ | |
| --transition-slow: 0.3s ease-in-out; | |
| --transition-medium: 0.2s ease-in-out; | |
| --transition-fast: 0.1s ease-in-out; | |
| } | |
| @keyframes fadeInScale { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.95); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| @keyframes shimmer { | |
| 0% { | |
| background-position: -200% 0; | |
| } | |
| 100% { | |
| background-position: 200% 0; | |
| } | |
| } | |
| :root { | |
| /* Enhanced Color Palette */ | |
| --primary: #3b82f6; | |
| --primary-dark: #1d4ed8; | |
| --primary-light: #60a5fa; | |
| --secondary: #64748b; | |
| --success: #10b981; | |
| --warning: #f59e0b; | |
| --danger: #ef4444; | |
| --info: #0ea5e9; | |
| --light: #f8fafc; | |
| --dark: #1e293b; | |
| --darker: #0f172a; | |
| --accent: #8b5cf6; | |
| --accent-primary: #3b82f6; | |
| --accent-secondary: #1d4ed8; | |
| --glass: rgba(255, 255, 255, 0.1); | |
| --glass-border: rgba(255, 255, 255, 0.2); | |
| --nav-active-bg: rgba(59, 130, 246, 0.1); | |
| --border-glass: 1px solid var(--glass-border); | |
| --card-bg: rgba(255, 255, 255, 0.05); | |
| --shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.1); | |
| --shadow-glass-hover: 0 12px 40px rgba(0, 0, 0, 0.15); | |
| /* Standardized Font Sizes */ | |
| --font-size-xs: 0.75rem; /* 12px */ | |
| --font-size-sm: 0.875rem; /* 14px */ | |
| --font-size-base: 1rem; /* 16px */ | |
| --font-size-lg: 1.125rem; /* 18px */ | |
| --font-size-xl: 1.25rem; /* 20px */ | |
| --font-size-2xl: 1.5rem; /* 24px */ | |
| --font-size-3xl: 1.875rem; /* 30px */ | |
| --font-size-4xl: 2.25rem; /* 36px */ | |
| --font-size-5xl: 3rem; /* 48px */ | |
| --font-size-6xl: 3.75rem; /* 60px */ | |
| --font-size-7xl: 4.5rem; /* 72px */ | |
| /* Font Weights */ | |
| --font-weight-light: 300; | |
| --font-weight-normal: 400; | |
| --font-weight-medium: 500; | |
| --font-weight-semibold: 600; | |
| --font-weight-bold: 700; | |
| --font-weight-extrabold: 800; | |
| /* Line Heights */ | |
| --line-height-tight: 1.25; | |
| --line-height-snug: 1.375; | |
| --line-height-normal: 1.5; | |
| --line-height-relaxed: 1.625; | |
| --line-height-loose: 2; | |
| /* Advanced Gradients */ | |
| --primary-gradient: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 50%, #1e40af 100%); | |
| --success-gradient: linear-gradient(135deg, #10b981 0%, #059669 100%); | |
| --warning-gradient: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); | |
| --danger-gradient: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); | |
| --info-gradient: linear-gradient(135deg, #0ea5e9 0%, #0284c7 100%); | |
| --accent-gradient: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); | |
| --glass-gradient: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); | |
| --hero-gradient: linear-gradient(135deg, rgba(30, 41, 59, 0.9) 0%, rgba(15, 23, 42, 0.95) 100%); | |
| --background-gradient: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%); | |
| /* Enhanced Shadows */ | |
| --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05); | |
| --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); | |
| --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); | |
| --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.15); | |
| --shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.25); | |
| --shadow-glow: 0 0 30px rgba(59, 130, 246, 0.3); | |
| --shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.1); | |
| /* Borders and Radius */ | |
| --border-radius-sm: 0.375rem; | |
| --border-radius: 0.5rem; | |
| --border-radius-lg: 0.75rem; | |
| --border-radius-xl: 1rem; | |
| --border-radius-2xl: 1.5rem; | |
| --border-glass: 1px solid var(--glass-border); | |
| } | |
| /* Base Styles */ | |
| body { | |
| font-family: 'Inter', system-ui, -apple-system, sans-serif; | |
| background: var(--background-gradient); | |
| background-attachment: fixed; | |
| color: var(--dark); | |
| margin: 0; | |
| padding: 0; | |
| overflow-x: hidden; | |
| } | |
| /* Force all headers to be black for visibility */ | |
| h1, h2, h3, h4, h5, h6 { | |
| color: black ; | |
| } | |
| /* Layout */ | |
| .app-container { | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| } | |
| /* Enhanced Hero Section - White Theme */ | |
| .hero-section { | |
| position: relative; | |
| min-height: 100vh; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: | |
| /* Professional Blue-Purple Gradient */ | |
| linear-gradient(135deg, rgba(59, 130, 246, 0.95) 0%, rgba(99, 102, 241, 0.95) 25%, rgba(139, 92, 246, 0.95) 50%, rgba(168, 85, 247, 0.95) 75%, rgba(139, 92, 246, 0.95) 100%), | |
| /* Infrastructure Grid Pattern */ | |
| linear-gradient(45deg, rgba(255, 255, 255, 0.08) 25%, transparent 25%), | |
| linear-gradient(-45deg, rgba(255, 255, 255, 0.06) 25%, transparent 25%), | |
| linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.08) 75%), | |
| linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.06) 75%), | |
| /* Subtle Accent Gradients */ | |
| radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.15) 0%, transparent 50%), | |
| radial-gradient(circle at 70% 80%, rgba(139, 92, 246, 0.12) 0%, transparent 50%), | |
| radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.08) 0%, transparent 50%); | |
| background-size: | |
| cover, | |
| 30px 30px, | |
| 30px 30px, | |
| 20px 20px, | |
| 20px 20px, | |
| 100% 100%, | |
| 100% 100%; | |
| background-position: | |
| center, | |
| 0 0, | |
| 0 0, | |
| 10px 10px, | |
| 10px 10px, | |
| center, | |
| center; | |
| color: white; | |
| overflow: hidden; | |
| animation: fadeInScale 1s ease-out; | |
| } | |
| .hero-overlay { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: | |
| radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.08) 0%, transparent 40%), | |
| radial-gradient(circle at 80% 80%, rgba(139, 92, 246, 0.1) 0%, transparent 40%), | |
| linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02)); | |
| z-index: 1; | |
| animation: gradientShift 8s ease-in-out infinite; | |
| } | |
| .hero-content { | |
| position: relative; | |
| z-index: 2; | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 4rem; | |
| align-items: center; | |
| animation: fadeInUp 1s ease-out; | |
| } | |
| @media (max-width: 768px) { | |
| .hero-content { | |
| grid-template-columns: 1fr; | |
| gap: 1.5rem; | |
| padding: 1rem; | |
| } | |
| .hero-section { | |
| padding: 1rem; | |
| min-height: auto; | |
| } | |
| .floating-elements { | |
| position: relative ; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.8rem; | |
| height: auto ; | |
| width: 100%; | |
| align-items: center; | |
| margin-top: 1rem; | |
| } | |
| .card-1, .card-2, .card-3 { | |
| position: static ; | |
| animation: none ; | |
| transform: none ; | |
| margin: 0 ; | |
| width: 90%; | |
| max-width: 300px; | |
| } | |
| } | |
| .hero-text { | |
| animation: slideInLeft 1s ease-out 0.2s both; | |
| } | |
| .hero-title { | |
| font-size: 4.5rem; | |
| font-weight: 900; | |
| margin-bottom: 0.5rem; /* Minimized margin */ | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| color: #FFFFFF ; /* White text */ | |
| text-shadow: | |
| -3px -3px 0 #000000, | |
| 3px -3px 0 #000000, | |
| -3px 3px 0 #000000, | |
| 3px 3px 0 #000000, | |
| -3px 0px 0 #000000, | |
| 3px 0px 0 #000000, | |
| 0px -3px 0 #000000, | |
| 0px 3px 0 #000000; | |
| filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.5)); | |
| position: relative; | |
| letter-spacing: -2px; | |
| animation: fadeInUp 1s ease-out 0.2s both; | |
| word-break: break-word; | |
| } | |
| /* Hero Title Responsive Breakpoints */ | |
| @media (max-width: 1024px) { | |
| .hero-title { | |
| font-size: 3.5rem; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .hero-title { | |
| font-size: 2.5rem; | |
| margin-bottom: 1rem; | |
| gap: 0.75rem; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .hero-title { | |
| font-size: 1.8rem; | |
| margin-bottom: 0.75rem; | |
| gap: 0.5rem; | |
| } | |
| } | |
| @keyframes whiteGlow { | |
| 0%, 100% { filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.6)) drop-shadow(0 0 30px rgba(59, 130, 246, 0.3)); } | |
| 50% { filter: drop-shadow(0 0 30px rgba(255, 255, 255, 0.9)) drop-shadow(0 0 50px rgba(59, 130, 246, 0.5)); } | |
| } | |
| .hero-title::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -4px; | |
| left: 0; | |
| width: 100%; | |
| height: 4px; | |
| background: linear-gradient(135deg, var(--accent-blue), var(--accent-purple), var(--accent-cyan)); | |
| border-radius: 2px; | |
| background-size: 200% 200%; | |
| animation: gradientShift 8s ease-in-out infinite; | |
| } | |
| .hero-icon { | |
| filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.4)); | |
| color: #ffffff; | |
| transition: all 0.3s ease; | |
| } | |
| .hero-icon:hover { | |
| filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.6)); | |
| transform: scale(1.05); | |
| } | |
| /* Explicit White Text for All Hero Subtitles */ | |
| .hero-subtitle { | |
| font-size: 1.5rem; | |
| margin-bottom: 2rem; | |
| opacity: 1; | |
| line-height: 1.6; | |
| color: #ffffff ; | |
| text-shadow: 0 2px 10px rgba(0, 0, 0, 0.4); | |
| font-weight: 300; | |
| letter-spacing: 0.5px; | |
| } | |
| /* Explicit White Text Class for InfraVision AI Text */ | |
| .infravision-title { | |
| color: #ffffff ; | |
| text-shadow: 0 4px 20px rgba(59, 130, 246, 0.5), 0 0 40px rgba(139, 92, 246, 0.3); | |
| font-weight: 900; | |
| } | |
| /* Explicit White Text for All Subtitles */ | |
| .white-text-subtitle { | |
| color: #ffffff ; | |
| text-shadow: 0 2px 10px rgba(0, 0, 0, 0.4); | |
| } | |
| .hero-features { | |
| display: grid; | |
| gap: 1.5rem; | |
| } | |
| .hero-feature { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| padding: 1rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-lg); | |
| transition: all 0.3s ease; | |
| } | |
| .hero-feature:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .hero-feature h3 { | |
| font-size: 1.1rem; | |
| margin-bottom: 0.25rem; | |
| color: #ffffff ; | |
| font-weight: 700; | |
| text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); | |
| } | |
| .hero-feature p { | |
| opacity: 1; | |
| font-size: 0.9rem; | |
| color: #ffffff ; | |
| text-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); | |
| } | |
| .feature-icon { | |
| color: var(--primary-light); | |
| flex-shrink: 0; | |
| } | |
| .hero-visual { | |
| position: relative; | |
| flex: 1; | |
| min-height: 400px; | |
| } | |
| .floating-elements { | |
| position: absolute; | |
| width: 100%; | |
| height: 100%; | |
| top: 0; | |
| right: 0; | |
| z-index: 5; | |
| } | |
| .floating-card { | |
| position: absolute; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| padding: 2.5rem 2rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: var(--shadow-glass); | |
| transition: all 0.3s ease; | |
| color: #ffffff ; | |
| font-weight: 600; | |
| text-align: center; | |
| min-width: 180px; | |
| text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); | |
| font-size: 1rem; | |
| } | |
| .floating-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.1), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .floating-card:hover::before { | |
| left: 100%; | |
| } | |
| .floating-card:hover { | |
| transform: scale(1.05) translateY(-4px); | |
| box-shadow: var(--shadow-glow); | |
| } | |
| .floating-card svg { | |
| color: var(--primary-light); | |
| margin-bottom: 0.25rem; | |
| width: 28px; | |
| height: 28px; | |
| } | |
| .floating-card span { | |
| font-size: 0.8rem; | |
| line-height: 1.2; | |
| } | |
| @media (max-width: 768px) { | |
| .floating-elements { | |
| height: auto ; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| animation: none ; | |
| } | |
| .card-1, .card-2, .card-3, .card-4 { | |
| position: static ; | |
| top: auto ; | |
| right: auto ; | |
| bottom: auto ; | |
| left: auto ; | |
| animation: none ; | |
| margin: 0; | |
| width: 100%; | |
| } | |
| } | |
| .card-1 { | |
| top: 55%; /* Pulled down */ | |
| right: 5%; | |
| transform: translateY(-130%) scale(0.9); /* Reduced size */ | |
| } | |
| .card-2 { | |
| top: 55%; /* Pulled down */ | |
| right: 18%; /* Pulled closer to text */ | |
| transform: translateY(-50%) scale(0.9); /* Reduced size */ | |
| } | |
| .card-3 { | |
| top: 55%; /* Pulled down */ | |
| right: 5%; | |
| transform: translateY(30%) scale(0.9); /* Reduced size */ | |
| } | |
| /* Base floating elements common styles */ | |
| .card-1, .card-2, .card-3 { | |
| position: absolute; | |
| animation: float-base 8s ease-in-out infinite; | |
| } | |
| @keyframes float-base { | |
| 0%, 100% { margin-top: 0px; } | |
| 50% { margin-top: -20px; } | |
| } | |
| @media (max-width: 768px) { | |
| .card-1, .card-2, .card-3 { | |
| position: static ; | |
| animation: none ; | |
| transform: none ; | |
| margin: 1rem auto; | |
| } | |
| .floating-elements { | |
| position: relative ; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| height: auto ; | |
| width: 100%; | |
| align-items: center; | |
| } | |
| } | |
| .card-4 { | |
| bottom: 15%; | |
| right: 12%; | |
| animation: float-slow 7.5s ease-in-out infinite; | |
| } | |
| @keyframes float-fast { | |
| 0%, 100% { transform: translateY(0px); } | |
| 50% { transform: translateY(-30px); } | |
| } | |
| /* Logo Badge - Static Position */ | |
| .logo-badge-static { | |
| position: absolute; | |
| top: 1rem; | |
| right: 1rem; | |
| width: 110px; | |
| height: 110px; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 250, 252, 0.95) 100%); | |
| border-radius: 16px; | |
| padding: 1rem; | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25), 0 0 30px rgba(37, 99, 235, 0.2); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 15; | |
| border: 4px solid #000000; | |
| backdrop-filter: blur(10px); | |
| font-weight: 800; | |
| text-align: center; | |
| overflow: hidden; | |
| transition: all 0.3s ease; | |
| } | |
| .logo-badge-static::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .logo-badge-static:hover::before { | |
| left: 100%; | |
| } | |
| .logo-badge-static:hover { | |
| transform: scale(1.08); | |
| box-shadow: 0 16px 50px rgba(0, 0, 0, 0.3), 0 0 40px rgba(37, 99, 235, 0.35); | |
| border-color: rgba(37, 99, 235, 0.5); | |
| } | |
| .logo-badge-static svg { | |
| width: 95%; | |
| height: 95%; | |
| object-fit: contain; | |
| } | |
| @media (max-width: 768px) { | |
| .logo-badge-static { | |
| width: 75px; | |
| height: 75px; | |
| bottom: 1rem; | |
| right: 1rem; | |
| border-radius: 12px; | |
| padding: 0.5rem; | |
| box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2), 0 0 20px rgba(37, 99, 235, 0.15); | |
| } | |
| } | |
| /* Remove old floating logo badge */ | |
| .logo-badge { | |
| display: none; | |
| } | |
| /* Dashboard Container */ | |
| .dashboard-container { | |
| position: relative; | |
| background: var(--background-gradient); | |
| min-height: calc(100vh - 100px); | |
| padding: 2rem; | |
| margin-top: 0; | |
| border-radius: var(--border-radius-2xl) var(--border-radius-2xl) 0 0; | |
| box-shadow: var(--shadow-2xl); | |
| backdrop-filter: blur(10px); | |
| } | |
| /* Navigation */ | |
| .nav-tabs-container { | |
| margin-bottom: 2rem; | |
| position: relative; | |
| } | |
| .nav-tabs { | |
| display: flex; | |
| gap: 1rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| padding: 1.5rem; | |
| box-shadow: var(--shadow-glass); | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| } | |
| /* Enhanced Navigation Tabs - InfraVision AI */ | |
| .nav-tab { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 1.75rem 2.25rem; | |
| border-radius: var(--border-radius-xl); | |
| cursor: pointer; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| background: rgba(255, 255, 255, 0.6); | |
| border: 1.5px solid rgba(37, 99, 235, 0.1); | |
| color: var(--text-secondary); | |
| position: relative; | |
| overflow: hidden; | |
| min-width: 160px; | |
| backdrop-filter: blur(10px); | |
| font-weight: 600; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.05); | |
| } | |
| .nav-tab::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(6, 182, 212, 0.15), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .nav-tab:hover::before { | |
| left: 100%; | |
| } | |
| .nav-tab:hover { | |
| background: rgba(248, 250, 252, 0.9); | |
| transform: translateY(-4px) scale(1.02); | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.12), | |
| 0 0 20px rgba(6, 182, 212, 0.08); | |
| color: #2563eb; | |
| border-color: rgba(37, 99, 235, 0.25); | |
| } | |
| .nav-tab.active { | |
| background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%); | |
| color: white; | |
| box-shadow: | |
| 0 15px 35px rgba(37, 99, 235, 0.3), | |
| 0 0 30px rgba(6, 182, 212, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| animation: navGlow 3s ease-in-out infinite; | |
| border-color: rgba(255, 255, 255, 0.3); | |
| transform: translateY(-2px); | |
| } | |
| @keyframes navGlow { | |
| 0%, 100% { | |
| box-shadow: | |
| 0 15px 35px rgba(37, 99, 235, 0.3), | |
| 0 0 30px rgba(6, 182, 212, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| } | |
| 50% { | |
| box-shadow: | |
| 0 18px 40px rgba(37, 99, 235, 0.4), | |
| 0 0 40px rgba(6, 182, 212, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| } | |
| } | |
| .nav-tab.active svg { | |
| filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8)); | |
| } | |
| .nav-label { | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| } | |
| .nav-desc { | |
| font-size: 0.75rem; | |
| opacity: 0.8; | |
| text-align: center; | |
| line-height: 1.2; | |
| } | |
| .nav-tab svg { | |
| transition: all 0.3s ease; | |
| filter: drop-shadow(0 0 5px rgba(59, 130, 246, 0.3)); | |
| } | |
| /* Main Content Frame */ | |
| .main-content-frame { | |
| position: relative; | |
| } | |
| .content-frame { | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-2xl); | |
| padding: 2rem; | |
| box-shadow: var(--shadow-glass); | |
| min-height: 600px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .content-frame::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 4px; | |
| background: var(--primary-gradient); | |
| border-radius: var(--border-radius-2xl) var(--border-radius-2xl) 0 0; | |
| } | |
| /* Navbar mobile toggle and header actions */ | |
| .nav-toggle { | |
| display: none; | |
| background: var(--surface-secondary); | |
| color: var(--text-primary); | |
| border: 1px solid var(--border-color); | |
| font-size: 1.25rem; | |
| padding: 0.25rem 0.5rem; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .nav-toggle:hover { | |
| background: var(--surface-hover); | |
| transform: scale(1.05); | |
| } | |
| .nav-label { | |
| display: inline-block; | |
| font-weight: 500; | |
| } | |
| .header-actions { | |
| display: flex; | |
| gap: 0.5rem; | |
| align-items: center; | |
| } | |
| .brand h1 { | |
| margin: 0; | |
| font-size: 1.5rem; | |
| color: #ffffff ; | |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); | |
| font-weight: 700; | |
| } | |
| /* Navigation */ | |
| .nav-tabs { | |
| display: flex; | |
| gap: 0.25rem; | |
| background: var(--surface-secondary); | |
| padding: 0.5rem; | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid var(--border-color); | |
| backdrop-filter: blur(10px); | |
| margin: 0; | |
| } | |
| /* responsive nav open state */ | |
| .nav-tabs.open { display: flex; } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 0.75rem 1rem; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| white-space: nowrap; | |
| font-size: 0.875rem; | |
| color: var(--text-secondary); | |
| font-weight: 500; | |
| border: none; | |
| background: transparent; | |
| text-decoration: none; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .nav-item::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.1), transparent); | |
| transition: left 0.5s ease; | |
| } | |
| .nav-item:hover::before { | |
| left: 100%; | |
| } | |
| .nav-item:hover { | |
| background: rgba(59, 130, 246, 0.08); | |
| color: var(--accent-blue); | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15); | |
| } | |
| .nav-item.active { | |
| background: linear-gradient(135deg, var(--accent-blue), var(--accent-purple)); | |
| color: white; | |
| transform: translateY(-1px); | |
| box-shadow: 0 6px 20px rgba(59, 130, 246, 0.3); | |
| } | |
| .nav-item.active:hover { | |
| transform: translateY(-3px); | |
| box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4); | |
| } | |
| .nav-item svg { | |
| width: 18px; | |
| height: 18px; | |
| transition: all 0.3s ease; | |
| } | |
| /* Header */ | |
| .header { | |
| background: var(--surface-primary); | |
| border-bottom: 1px solid var(--border-color); | |
| backdrop-filter: blur(20px); | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| box-shadow: var(--shadow-soft); | |
| } | |
| .header-content { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 1rem 2rem; | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| gap: 1rem; | |
| } | |
| .brand { | |
| flex-shrink: 0; | |
| } | |
| /* Main Content */ | |
| .main-content { | |
| flex: 1; | |
| padding: 2rem; | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| width: 100%; | |
| } | |
| /* Content Area - Standardized for all pages */ | |
| .content-area { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| width: 100%; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| /* Page Headers */ | |
| .page-header { | |
| margin-bottom: 2rem; | |
| text-align: center; | |
| } | |
| .page-header h1 { | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| color: #000000; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 1rem; | |
| } | |
| .page-header p { | |
| font-size: 1.1rem; | |
| color: var(--secondary); | |
| max-width: 600px; | |
| margin: 0 auto; | |
| } | |
| /* Cards */ | |
| .card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.8) 100%); | |
| backdrop-filter: blur(20px); | |
| border: 1.5px solid var(--glass-border); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: | |
| 0 10px 30px rgba(59, 130, 246, 0.08), | |
| 0 4px 15px rgba(59, 130, 246, 0.04), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| animation: fadeInScale 0.6s ease-out; | |
| } | |
| .card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 4px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| background-size: 200% 100%; | |
| border-radius: var(--border-radius-xl) var(--border-radius-xl) 0 0; | |
| animation: gradientShift 3s ease-in-out infinite; | |
| } | |
| .card::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: radial-gradient(circle at 20% 20%, rgba(37, 99, 235, 0.03) 0%, transparent 50%); | |
| pointer-events: none; | |
| border-radius: var(--border-radius-xl); | |
| } | |
| .card:hover { | |
| transform: translateY(-8px) scale(1.02); | |
| box-shadow: | |
| 0 20px 40px rgba(59, 130, 246, 0.15), | |
| 0 8px 25px rgba(59, 130, 246, 0.08), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(59, 130, 246, 0.3); | |
| } | |
| .card-header { | |
| padding-bottom: 1rem; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| margin-bottom: 1.5rem; | |
| position: relative; | |
| } | |
| .card-header h2, .card-header h3 { | |
| margin: 0; | |
| color: #000000; | |
| font-weight: 700; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .card-body { | |
| padding-top: 0.5rem; | |
| color: var(--dark); | |
| } | |
| /* Upload Zone */ | |
| .upload-zone { | |
| border: 2.5px dashed rgba(37, 99, 235, 0.3); | |
| border-radius: var(--border-radius-xl); | |
| padding: 3rem; | |
| text-align: center; | |
| cursor: pointer; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| background: linear-gradient(135deg, rgba(248, 250, 252, 0.8) 0%, rgba(241, 245, 249, 0.6) 100%); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.08), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.8); | |
| } | |
| .upload-zone::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: radial-gradient(circle at 20% 50%, rgba(37, 99, 235, 0.04) 0%, transparent 50%); | |
| pointer-events: none; | |
| } | |
| .upload-zone:hover { | |
| border-color: #2563eb; | |
| background: linear-gradient(135deg, rgba(241, 245, 249, 1) 0%, rgba(226, 232, 240, 0.8) 100%); | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.15), | |
| inset 0 1px 2px rgba(255, 255, 255, 0.9); | |
| transform: scale(1.01); | |
| } | |
| /* Results Display */ | |
| .results-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .result-card { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 1.5rem; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* Analysis Section */ | |
| .analysis-section { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| margin-top: 1.5rem; | |
| overflow: hidden; | |
| } | |
| .analysis-header { | |
| background: var(--primary-gradient); | |
| color: white; | |
| padding: 1rem 1.5rem; | |
| } | |
| .analysis-content { | |
| padding: 1.5rem; | |
| } | |
| /* Image Preview */ | |
| .image-preview { | |
| max-width: 100%; | |
| border-radius: var(--border-radius); | |
| } | |
| /* Buttons */ | |
| .btn { | |
| padding: 0.5rem 1rem; | |
| border-radius: var(--border-radius); | |
| border: none; | |
| cursor: pointer; | |
| transition: all 0.2s; | |
| } | |
| .btn-primary { | |
| background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%); | |
| border: 1.5px solid rgba(37, 99, 235, 0.3); | |
| color: white; | |
| padding: 1rem 2.5rem; | |
| border-radius: var(--border-radius-xl); | |
| font-weight: 700; | |
| font-size: 1rem; | |
| cursor: pointer; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .btn-primary::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); | |
| transition: left 0.5s; | |
| } | |
| .btn-primary:hover::before { | |
| left: 100%; | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-3px); | |
| box-shadow: | |
| 0 15px 35px rgba(37, 99, 235, 0.4), | |
| 0 0 25px rgba(6, 182, 212, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| border-color: rgba(37, 99, 235, 0.6); | |
| background: linear-gradient(135deg, #1e40af 0%, #1d4ed8 100%); | |
| } | |
| .btn-primary:active { | |
| transform: translateY(-1px) scale(0.98); | |
| box-shadow: | |
| 0 5px 15px rgba(37, 99, 235, 0.2), | |
| inset 0 2px 4px rgba(0, 0, 0, 0.1); | |
| } | |
| .btn-secondary { | |
| background: var(--secondary); | |
| color: white; | |
| } | |
| /* Forms */ | |
| .form-group { | |
| margin-bottom: 1.5rem; | |
| } | |
| .form-label { | |
| display: block; | |
| margin-bottom: 0.75rem; | |
| color: #000000; | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| letter-spacing: 0.3px; | |
| } | |
| .form-control { | |
| width: 100%; | |
| padding: 0.875rem 1.25rem; | |
| border: 1.5px solid rgba(37, 99, 235, 0.15); | |
| border-radius: var(--border-radius-lg); | |
| background: rgba(255, 255, 255, 0.95); | |
| color: #000000; | |
| font-size: 1rem; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| box-shadow: | |
| 0 4px 12px rgba(37, 99, 235, 0.04), | |
| inset 0 1px 2px rgba(37, 99, 235, 0.05); | |
| } | |
| .form-control:focus { | |
| outline: none; | |
| border-color: #2563eb; | |
| box-shadow: | |
| 0 6px 20px rgba(37, 99, 235, 0.12), | |
| inset 0 1px 2px rgba(37, 99, 235, 0.08), | |
| 0 0 0 3px rgba(37, 99, 235, 0.1); | |
| transform: translateY(-2px); | |
| background: rgba(255, 255, 255, 1); | |
| } | |
| .form-control::placeholder { | |
| color: rgba(100, 116, 139, 0.6); | |
| font-weight: 400; | |
| } | |
| /* Progress */ | |
| .progress { | |
| height: 0.5rem; | |
| background: #e5e7eb; | |
| border-radius: 1rem; | |
| overflow: hidden; | |
| } | |
| .progress-bar-container { | |
| height: 28px; | |
| background: linear-gradient(90deg, #f0f4f8, #e2e8f0); | |
| border-radius: var(--border-radius-lg); | |
| overflow: hidden; | |
| border: 1px solid rgba(37, 99, 235, 0.1); | |
| position: relative; | |
| box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.05); | |
| } | |
| .progress-bar { | |
| height: 100%; | |
| background: linear-gradient(90deg, #2563eb 0%, #06b6d4 50%, #2563eb 100%); | |
| background-size: 200% 100%; | |
| animation: progressGradient 2s ease infinite; | |
| transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| box-shadow: | |
| 0 0 10px rgba(37, 99, 235, 0.5), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.3); | |
| } | |
| .progress-bar::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); | |
| animation: shimmer 2s ease infinite; | |
| } | |
| @keyframes progressGradient { | |
| 0% { background-position: 0% center; } | |
| 50% { background-position: 100% center; } | |
| 100% { background-position: 0% center; } | |
| } | |
| @keyframes shimmer { | |
| 0% { transform: translateX(-100%); } | |
| 100% { transform: translateX(100%); } | |
| } | |
| /* Utilities */ | |
| .text-center { text-align: center; } | |
| .mb-1 { margin-bottom: 0.5rem; } | |
| .mb-2 { margin-bottom: 1rem; } | |
| .mb-3 { margin-bottom: 1.5rem; } | |
| .mt-1 { margin-top: 0.5rem; } | |
| .mt-2 { margin-top: 1rem; } | |
| .mt-3 { margin-top: 1.5rem; } | |
| /* Visualization Components */ | |
| .visualization { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| border-radius: var(--border-radius-lg); | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.1), | |
| 0 2px 8px rgba(37, 99, 235, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| border: 1.5px solid rgba(37, 99, 235, 0.12); | |
| position: relative; | |
| overflow: hidden; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .visualization::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| } | |
| .visualization:hover { | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.15), | |
| 0 4px 12px rgba(37, 99, 235, 0.08), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(37, 99, 235, 0.25); | |
| } | |
| .chart-container { | |
| width: 100%; | |
| height: 400px; | |
| position: relative; | |
| border-radius: var(--border-radius-lg); | |
| overflow: hidden; | |
| background: linear-gradient(135deg, rgba(240, 244, 248, 0.5), rgba(226, 232, 240, 0.5)); | |
| } | |
| /* Processed Images Tab Styles */ | |
| .processed-images-container { | |
| padding: 2rem 0; | |
| } | |
| .main-image-container { | |
| position: relative; | |
| min-height: 400px; | |
| } | |
| .main-image-card { | |
| height: 100%; | |
| } | |
| .main-preview-image { | |
| width: 100%; | |
| max-height: 600px; | |
| object-fit: contain; | |
| } | |
| .image-type-button { | |
| width: 100%; | |
| text-align: left; | |
| padding: 1.25rem; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(248, 250, 252, 0.7) 100%); | |
| border: 1.5px solid rgba(37, 99, 235, 0.15); | |
| border-radius: var(--border-radius-lg); | |
| cursor: pointer; | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.08); | |
| } | |
| .image-type-button::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, #2563eb, transparent); | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .image-type-button:hover::before { | |
| opacity: 1; | |
| } | |
| .image-type-button:hover { | |
| transform: translateY(-4px); | |
| box-shadow: 0 12px 30px rgba(37, 99, 235, 0.15); | |
| border-color: rgba(37, 99, 235, 0.3); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| } | |
| .no-image-placeholder { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| height: 400px; | |
| color: var(--secondary); | |
| background: var(--light); | |
| border-radius: var(--border-radius); | |
| } | |
| .no-image-placeholder i { | |
| font-size: 3rem; | |
| margin-bottom: 1rem; | |
| } | |
| /* Environmental Impact Tab Styles */ | |
| .environmental-impact-container { | |
| padding: 2rem 0; | |
| } | |
| .impact-summary-card { | |
| background: white; | |
| border-radius: var(--border-radius-lg); | |
| margin-bottom: 2rem; | |
| } | |
| .impact-metric { | |
| text-align: center; | |
| padding: 1.5rem; | |
| } | |
| .impact-metric i { | |
| font-size: 2rem; | |
| margin-bottom: 0.5rem; | |
| } | |
| .chart-card { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .chart-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); | |
| animation: shimmer 3s infinite; | |
| z-index: 1; | |
| pointer-events: none; | |
| } | |
| .environmental-chart { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: contain; | |
| } | |
| .chart-selector { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 1rem; | |
| } | |
| .chart-selector-item { | |
| padding: 1rem; | |
| margin-bottom: 0.5rem; | |
| border-radius: var(--border-radius); | |
| transition: all 0.3s ease; | |
| } | |
| .chart-selector-item:hover { | |
| background: var(--light); | |
| } | |
| .chart-selector-item.active { | |
| background: var(--primary-gradient); | |
| color: white; | |
| } | |
| .recommendations-list { | |
| padding-left: 1.5rem; | |
| } | |
| .recommendations-list li { | |
| margin-bottom: 0.75rem; | |
| } | |
| /* Real-time Monitoring and Video Analysis Styles */ | |
| .realtime-monitoring-container, | |
| .video-grid { | |
| padding: 2rem 0; | |
| display: grid; | |
| grid-template-columns: 2fr 1fr; | |
| gap: 2rem; | |
| } | |
| .stream-card { | |
| background: white; | |
| border-radius: var(--border-radius-lg); | |
| overflow: hidden; | |
| box-shadow: var(--shadow-md); | |
| } | |
| .stream-header { | |
| padding: 1.5rem; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| border-bottom: 1px solid #e5e7eb; | |
| } | |
| .stream-header h3 { | |
| margin: 0; | |
| font-size: 1.2rem; | |
| color: var(--dark); | |
| } | |
| .stream-controls { | |
| display: flex; | |
| gap: 1rem; | |
| } | |
| .btn-primary svg, | |
| .btn-danger svg, | |
| .btn-secondary svg { | |
| margin-right: 0.5rem; | |
| vertical-align: middle; | |
| } | |
| .stream-content { | |
| position: relative; | |
| aspect-ratio: 16/9; | |
| background: var(--dark); | |
| overflow: hidden; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .stream-placeholder { | |
| text-align: center; | |
| color: var(--light); | |
| } | |
| .stream-placeholder svg { | |
| opacity: 0.5; | |
| margin-bottom: 1rem; | |
| } | |
| .results-sidebar { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .results-card { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 1.5rem; | |
| box-shadow: var(--shadow-md); | |
| } | |
| .results-card h3 { | |
| margin: 0 0 1rem 0; | |
| font-size: 1.1rem; | |
| color: var(--dark); | |
| } | |
| .analysis-metrics { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); | |
| gap: 1rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .metric { | |
| text-align: center; | |
| } | |
| .metric h4 { | |
| margin: 0; | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| } | |
| .metric p { | |
| margin: 0.5rem 0 0 0; | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| color: var(--dark); | |
| } | |
| .detection-card { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 1rem; | |
| box-shadow: var(--shadow-sm); | |
| transition: transform 0.2s ease-in-out; | |
| } | |
| .detection-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .detection-card h4 { | |
| margin: 0 0 0.5rem 0; | |
| font-size: 1rem; | |
| color: var(--dark); | |
| } | |
| .detection-card p { | |
| margin: 0.25rem 0; | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| } | |
| .stream-container { | |
| position: relative; | |
| aspect-ratio: 16/9; | |
| background: var(--dark); | |
| border-radius: var(--border-radius) var(--border-radius) 0 0; | |
| overflow: hidden; | |
| } | |
| .stream-feed { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .stream-placeholder { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| color: var(--light); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .stream-placeholder svg { | |
| width: 48px; | |
| height: 48px; | |
| opacity: 0.5; | |
| } | |
| .stream-controls { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 1rem; | |
| background: white; | |
| border-radius: 0 0 var(--border-radius) var(--border-radius); | |
| border-top: 1px solid #e5e7eb; | |
| } | |
| .metrics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); | |
| gap: 0.75rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .metric-card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| padding: 1.5rem; | |
| border-radius: var(--border-radius-lg); | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.04), | |
| 0 2px 8px rgba(37, 99, 235, 0.02), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| border: 1.5px solid rgba(37, 99, 235, 0.08); | |
| } | |
| .metric-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.1), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .metric-card:hover::before { | |
| left: 100%; | |
| } | |
| .metric-card:hover { | |
| transform: translateY(-4px) scale(1.02); | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.15), | |
| 0 4px 12px rgba(37, 99, 235, 0.08), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(37, 99, 235, 0.25); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, rgba(248, 250, 252, 0.95) 100%); | |
| } | |
| .metric-icon { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: var(--border-radius-lg); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| flex-shrink: 0; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .metric-icon::after { | |
| content: ''; | |
| position: absolute; | |
| top: -50%; | |
| left: -50%; | |
| width: 200%; | |
| height: 200%; | |
| background: radial-gradient(circle, rgba(255, 255, 255, 0.3) 0%, transparent 70%); | |
| animation: shine 3s infinite; | |
| } | |
| @keyframes shine { | |
| 0% { transform: translate(0, 0); } | |
| 50% { transform: translate(10px, 10px); } | |
| 100% { transform: translate(0, 0); } | |
| } | |
| .metric-content { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .metric-title { | |
| font-size: 0.875rem; | |
| color: var(--text-secondary); | |
| margin-bottom: 0.25rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .metric-value { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: #000000; | |
| line-height: 1.2; | |
| -webkit-background-clip: unset; | |
| -webkit-text-fill-color: initial; | |
| background-clip: unset; | |
| background: none; | |
| } | |
| .metric-subtitle { | |
| font-size: 0.75rem; | |
| color: #000000; | |
| margin-top: 0.25rem; | |
| font-weight: 500; | |
| } | |
| .monitoring-grid { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr; | |
| gap: 2rem; | |
| margin-top: 2rem; | |
| } | |
| .chart-card { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: var(--border-radius-xl); | |
| padding: 1.5rem; | |
| box-shadow: var(--shadow-glass); | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .chart-card .card-header { | |
| margin-bottom: 1.5rem; | |
| } | |
| .chart-card .card-header h3 { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| font-size: 1.1rem; | |
| margin: 0; | |
| color: var(--dark); | |
| } | |
| .chart-card .card-body { | |
| flex: 1; | |
| min-height: 300px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .chart-placeholder { | |
| color: var(--secondary); | |
| text-align: center; | |
| padding: 2rem; | |
| background: rgba(255, 255, 255, 0.5); | |
| border-radius: var(--border-radius); | |
| width: 100%; | |
| height: 100%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .chart-card h3 { | |
| margin: 0 0 1rem 0; | |
| font-size: 1.1rem; | |
| color: var(--dark); | |
| } | |
| .alerts-card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| border-radius: var(--border-radius-lg); | |
| padding: 2rem; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.1), | |
| 0 2px 8px rgba(37, 99, 235, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| border: 1.5px solid rgba(37, 99, 235, 0.12); | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| overflow: hidden; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .alerts-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| } | |
| .alerts-card:hover { | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.15), | |
| 0 4px 12px rgba(37, 99, 235, 0.08), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(37, 99, 235, 0.25); | |
| } | |
| .alerts-card h3 { | |
| margin: 0 0 1.5rem 0; | |
| font-size: 1.25rem; | |
| color: #2563eb; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| font-weight: 800; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .alerts-list { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding-right: 0.5rem; | |
| } | |
| /* Analytics Styles */ | |
| .filters-bar { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 2rem; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .time-range-selector { | |
| display: flex; | |
| gap: 0.5rem; | |
| flex-wrap: wrap; | |
| } | |
| .filter-btn { | |
| padding: 0.5rem 1rem; | |
| border: 1px solid #e5e7eb; | |
| background: white; | |
| border-radius: var(--border-radius); | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| cursor: pointer; | |
| transition: all 0.2s ease-in-out; | |
| } | |
| .filter-btn:hover { | |
| border-color: var(--primary); | |
| color: var(--primary); | |
| } | |
| .filter-btn.active { | |
| background: var(--primary-gradient); | |
| border-color: transparent; | |
| color: white; | |
| } | |
| .charts-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| width: 100%; | |
| } | |
| .loading-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 4rem; | |
| color: var(--text-secondary); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.5), rgba(248, 250, 252, 0.3)); | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| min-height: 300px; | |
| } | |
| .spinner { | |
| width: 50px; | |
| height: 50px; | |
| border: 3px solid rgba(37, 99, 235, 0.1); | |
| border-top: 3px solid #2563eb; | |
| border-right: 3px solid #06b6d4; | |
| border-radius: 50%; | |
| animation: spin 1.5s linear infinite; | |
| margin-bottom: 1.5rem; | |
| box-shadow: 0 0 20px rgba(37, 99, 235, 0.3); | |
| } | |
| .summary-cards { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 2rem; | |
| margin-top: 2rem; | |
| } | |
| .summary-card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| border-radius: var(--border-radius-lg); | |
| padding: 1.75rem; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.1), | |
| 0 2px 8px rgba(37, 99, 235, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| border: 1.5px solid rgba(37, 99, 235, 0.12); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .summary-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| } | |
| .summary-card:hover { | |
| transform: translateY(-6px) scale(1.02); | |
| box-shadow: | |
| 0 16px 40px rgba(37, 99, 235, 0.2), | |
| 0 4px 12px rgba(6, 182, 212, 0.1), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(37, 99, 235, 0.3); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, rgba(248, 250, 252, 0.95) 100%); | |
| } | |
| .summary-card h3 { | |
| margin: 0 0 1.25rem 0; | |
| font-size: 1.25rem; | |
| color: #2563eb; | |
| font-weight: 800; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .summary-card ul { | |
| margin: 0; | |
| padding-left: 1.5rem; | |
| list-style: none; | |
| } | |
| .summary-card li { | |
| margin-bottom: 0.75rem; | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| font-weight: 500; | |
| position: relative; | |
| padding-left: 1rem; | |
| } | |
| .summary-card li::before { | |
| content: '→'; | |
| position: absolute; | |
| left: 0; | |
| color: #06b6d4; | |
| font-weight: 700; | |
| } | |
| .alert-item { | |
| padding: 1.25rem; | |
| border-radius: var(--border-radius-lg); | |
| margin-bottom: 1rem; | |
| border: 1.5px solid #e5e7eb; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| overflow: hidden; | |
| box-shadow: | |
| 0 4px 12px rgba(0, 0, 0, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| } | |
| .alert-item::before { | |
| content: ''; | |
| position: absolute; | |
| left: 0; | |
| top: 0; | |
| bottom: 0; | |
| width: 4px; | |
| background: linear-gradient(180deg, transparent, #2563eb, transparent); | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .alert-item:hover::before { | |
| opacity: 1; | |
| } | |
| .alert-item:hover { | |
| transform: translateY(-4px); | |
| box-shadow: | |
| 0 8px 24px rgba(37, 99, 235, 0.15), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| border-color: rgba(37, 99, 235, 0.25); | |
| } | |
| .alert-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 0.75rem; | |
| gap: 1rem; | |
| } | |
| .alert-time { | |
| font-size: 0.75rem; | |
| color: var(--text-secondary); | |
| font-weight: 500; | |
| letter-spacing: 0.1px; | |
| } | |
| .alert-severity { | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| padding: 0.35rem 0.65rem; | |
| border-radius: 999px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| border: 1px solid; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| } | |
| .alert-message { | |
| margin: 0; | |
| font-size: 0.875rem; | |
| color: var(--text-dark); | |
| line-height: 1.5; | |
| font-weight: 500; | |
| } | |
| .severity-critical { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.95), rgba(220, 38, 38, 0.95)); | |
| color: white; | |
| border-color: #dc2626; | |
| box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3); | |
| } | |
| .severity-warning { | |
| background: linear-gradient(135deg, rgba(251, 146, 60, 0.95), rgba(234, 88, 12, 0.95)); | |
| color: white; | |
| border-color: #ea580c; | |
| box-shadow: 0 4px 12px rgba(251, 146, 60, 0.3); | |
| } | |
| .severity-info { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.95), rgba(37, 99, 235, 0.95)); | |
| color: white; | |
| border-color: #2563eb; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3); | |
| } | |
| .alert-critical { | |
| border-color: rgba(239, 68, 68, 0.3); | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.08), rgba(220, 38, 38, 0.05)); | |
| } | |
| .alert-warning { | |
| border-color: var(--warning); | |
| background: rgba(245, 158, 11, 0.1); | |
| } | |
| .alert-info { | |
| border-color: var(--info); | |
| background: rgba(14, 165, 233, 0.1); | |
| } | |
| .no-alerts { | |
| text-align: center; | |
| color: var(--secondary); | |
| font-size: 0.875rem; | |
| margin: 2rem 0; | |
| } | |
| .image-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1.5rem; | |
| padding: 1.5rem 0; | |
| } | |
| .image-grid-item { | |
| background: white; | |
| border-radius: var(--border-radius-lg); | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.1), | |
| 0 2px 8px rgba(37, 99, 235, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| border: 1.5px solid rgba(37, 99, 235, 0.12); | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .image-grid-item::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| z-index: 1; | |
| } | |
| .image-grid-item:hover { | |
| transform: translateY(-8px) scale(1.02); | |
| box-shadow: | |
| 0 16px 40px rgba(37, 99, 235, 0.2), | |
| 0 4px 12px rgba(6, 182, 212, 0.1), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| border-color: rgba(37, 99, 235, 0.3); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, rgba(248, 250, 252, 0.95) 100%); | |
| } | |
| .image-grid-image-container { | |
| position: relative; | |
| width: 100%; | |
| overflow: auto; | |
| background: linear-gradient(135deg, #f0f4f8, #e2e8f0); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 1rem; | |
| flex: 1; | |
| min-height: 320px; | |
| } | |
| .image-grid-item img { | |
| width: 100%; | |
| height: auto; | |
| object-fit: contain; | |
| transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| max-height: 100%; | |
| } | |
| .image-grid-item:hover img { | |
| transform: scale(1.08); | |
| filter: brightness(1.1); | |
| } | |
| .image-grid-title { | |
| font-size: 0.875rem; | |
| font-weight: 700; | |
| color: #000000; | |
| padding: 1rem; | |
| background: white; | |
| text-align: center; | |
| border-top: 1px solid rgba(37, 99, 235, 0.1); | |
| letter-spacing: 0.2px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .chart-placeholder { | |
| background: var(--light); | |
| border-radius: var(--border-radius); | |
| padding: 2rem; | |
| text-align: center; | |
| color: var(--secondary); | |
| min-height: 200px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 0.875rem; | |
| } | |
| .metrics-card { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 1.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* Environmental Page Styles */ | |
| .environmental-page { | |
| min-height: 100vh; | |
| background: linear-gradient(135deg, var(--bg-secondary), var(--bg-primary)); | |
| } | |
| .environmental-content { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| padding: 0 2rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 2rem; | |
| margin-top: 2rem; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .metrics-frame { | |
| padding: 2.5rem; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.5) 0%, rgba(248, 250, 252, 0.3) 100%); | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .metrics-frame::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: | |
| linear-gradient(45deg, rgba(37, 99, 235, 0.02) 25%, transparent 25%), | |
| linear-gradient(-45deg, rgba(37, 99, 235, 0.02) 25%, transparent 25%), | |
| linear-gradient(45deg, transparent 75%, rgba(37, 99, 235, 0.02) 75%), | |
| linear-gradient(-45deg, transparent 75%, rgba(37, 99, 235, 0.02) 75%); | |
| background-size: 20px 20px; | |
| background-position: 0 0, 0 10px, 10px -10px, -10px 0; | |
| pointer-events: none; | |
| } | |
| .metrics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .metric-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 1rem; | |
| background: rgba(255, 255, 255, 0.5); | |
| border-radius: var(--border-radius); | |
| transition: var(--transition-medium); | |
| } | |
| .metric-card:hover { | |
| background: rgba(255, 255, 255, 0.8); | |
| transform: translateY(-2px); | |
| } | |
| .metric-icon { | |
| width: 40px; | |
| height: 40px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: var(--border-radius); | |
| color: white; | |
| flex-shrink: 0; | |
| } | |
| .bg-blue { background: var(--gradient-blue); } | |
| .bg-azure { background: var(--gradient-azure); } | |
| .bg-indigo { background: var(--gradient-indigo); } | |
| .bg-cyan { background: var(--gradient-cyan); } | |
| .metric-content { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .metric-title { | |
| font-size: 0.75rem; | |
| color: var(--secondary); | |
| margin-bottom: 0.2rem; | |
| font-weight: 500; | |
| line-height: 1.2; | |
| } | |
| .metric-value { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| line-height: 1.2; | |
| } | |
| .metric-subtitle { | |
| font-size: 0.65rem; | |
| color: var(--secondary); | |
| margin-top: 0.2rem; | |
| line-height: 1.2; | |
| } | |
| .recommendations-section { | |
| padding: 2rem; | |
| } | |
| .recommendations-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| margin-top: 1.5rem; | |
| } | |
| .recommendation-card { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 1rem; | |
| padding: 1.25rem; | |
| transition: var(--transition-medium); | |
| animation: fadeInUp 0.5s ease-out forwards; | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| .recommendation-card:hover { | |
| transform: translateY(-2px) translateX(5px); | |
| } | |
| .recommendation-card:nth-child(1) { animation-delay: 0.1s; } | |
| .recommendation-card:nth-child(2) { animation-delay: 0.2s; } | |
| .recommendation-card:nth-child(3) { animation-delay: 0.3s; } | |
| .recommendation-card:nth-child(4) { animation-delay: 0.4s; } | |
| .recommendation-icon { | |
| font-size: 1.5rem; | |
| min-width: 40px; | |
| height: 40px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--gradient-blue); | |
| border-radius: var(--border-radius); | |
| box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2); | |
| } | |
| .recommendation-text { | |
| font-size: 0.95rem; | |
| color: var(--secondary); | |
| line-height: 1.5; | |
| } | |
| .charts-frame { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| .chart-panel { | |
| min-height: 400px; | |
| display: flex; | |
| flex-direction: column; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.5) 0%, rgba(248, 250, 252, 0.3) 100%); | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| padding: 2rem; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .chart-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| } | |
| .panel-header { | |
| margin-bottom: 1.5rem; | |
| padding-bottom: 1.5rem; | |
| border-bottom: 1px solid rgba(37, 99, 235, 0.1); | |
| position: relative; | |
| } | |
| .panel-header::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -1px; | |
| left: 0; | |
| width: 40px; | |
| height: 2px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4); | |
| border-radius: 1px; | |
| } | |
| .panel-header h3 { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| margin: 0; | |
| color: #2563eb; | |
| font-size: 1.25rem; | |
| font-weight: 800; | |
| text-transform: uppercase; | |
| letter-spacing: 0.2px; | |
| } | |
| .panel-body { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Enhanced Chart Container */ | |
| .chart-container { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: #e5e7eb; | |
| font-size: 0.9rem; | |
| background: linear-gradient(135deg, rgba(17, 24, 39, 0.95) 0%, rgba(31, 41, 55, 0.90) 100%); | |
| border-radius: 20px; | |
| padding: 1.5rem; | |
| border: 1px solid rgba(59, 130, 246, 0.2); | |
| backdrop-filter: blur(20px); | |
| box-shadow: | |
| 0 20px 25px -5px rgba(0, 0, 0, 0.3), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| } | |
| .chart-container::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.1), transparent); | |
| transition: left 0.8s ease-in-out; | |
| z-index: 1; | |
| } | |
| .chart-container:hover::before { | |
| left: 100%; | |
| } | |
| .chart-container:hover { | |
| transform: translateY(-4px) scale(1.01); | |
| border-color: rgba(59, 130, 246, 0.4); | |
| box-shadow: | |
| 0 32px 64px -12px rgba(59, 130, 246, 0.25), | |
| 0 20px 25px -5px rgba(0, 0, 0, 0.4), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| } | |
| .chart-container.with-gradient { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.08) 50%, rgba(16, 185, 129, 0.06) 100%); | |
| } | |
| .metric-icon { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: var(--border-radius-sm); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| } | |
| .metric-details { | |
| flex: 1; | |
| } | |
| .metric-title { | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| margin-bottom: 0.25rem; | |
| } | |
| .metric-value { | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| color: var(--dark); | |
| } | |
| /* Material Analysis Styles */ | |
| .material-analysis-section { | |
| padding: 2rem; | |
| } | |
| .material-metrics { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1.5rem; | |
| margin-top: 1.5rem; | |
| } | |
| /* Sustainability Score Styles */ | |
| .sustainability-score { | |
| padding: 2rem; | |
| } | |
| .score-display { | |
| display: flex; | |
| align-items: center; | |
| gap: 2rem; | |
| justify-content: center; | |
| } | |
| .score-circle { | |
| width: 120px; | |
| height: 120px; | |
| border-radius: 50%; | |
| background: conic-gradient(var(--primary) 0% 78%, #e5e7eb 78% 100%); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| } | |
| .score-circle::before { | |
| content: ''; | |
| position: absolute; | |
| width: 90px; | |
| height: 90px; | |
| border-radius: 50%; | |
| background: white; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| } | |
| .score-value { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: var(--primary); | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .score-label { | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .score-description { | |
| flex: 1; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.6), rgba(248, 250, 252, 0.4)); | |
| padding: 1rem; | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.08); | |
| transition: all 0.3s ease; | |
| } | |
| .score-description:hover { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.8), rgba(248, 250, 252, 0.6)); | |
| border-color: rgba(37, 99, 235, 0.15); | |
| } | |
| .score-description h3 { | |
| margin: 0 0 0.5rem 0; | |
| color: #2563eb; | |
| font-weight: 700; | |
| font-size: 1rem; | |
| } | |
| .score-description p { | |
| margin: 0; | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| font-size: 0.9rem; | |
| } | |
| /* Alert Styles */ | |
| .alerts-section { | |
| padding: 2rem; | |
| } | |
| .alerts-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .alert-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| padding: 1rem; | |
| border-radius: var(--border-radius); | |
| border-left: 4px solid; | |
| } | |
| .alert-card.warning { | |
| background: rgba(245, 158, 11, 0.1); | |
| border-left-color: var(--warning); | |
| } | |
| .alert-card.success { | |
| background: rgba(16, 185, 129, 0.1); | |
| border-left-color: var(--success); | |
| } | |
| .alert-content { | |
| flex: 1; | |
| } | |
| .alert-message { | |
| font-weight: 500; | |
| color: var(--dark); | |
| margin-bottom: 0.25rem; | |
| } | |
| .alert-severity { | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| font-weight: 600; | |
| } | |
| .alert-card.warning .alert-severity { | |
| color: var(--warning); | |
| } | |
| .alert-card.success .alert-severity { | |
| color: var(--success); | |
| } | |
| /* Trend Styles */ | |
| .trend { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| margin-top: 0.5rem; | |
| } | |
| .trend.positive { | |
| color: var(--danger); | |
| } | |
| .trend.negative { | |
| color: var(--success); | |
| } | |
| /* Metric icon backgrounds */ | |
| .bg-primary { background: var(--primary-gradient); } | |
| .bg-success { background: var(--success-gradient); } | |
| .bg-warning { background: var(--warning-gradient); } | |
| .bg-danger { background: var(--danger-gradient); } | |
| .bg-info { background: var(--info-gradient); } | |
| .detection-history { | |
| max-height: 300px; | |
| overflow-y: auto; | |
| } | |
| /* Enhanced Professional Glass UI Components */ | |
| .glass-panel { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: | |
| var(--glass-shadow), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| padding: 2rem; | |
| transition: all var(--transition-medium); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .glass-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); | |
| } | |
| .glass-panel:hover { | |
| transform: translateY(-4px); | |
| box-shadow: | |
| 0 16px 50px rgba(59, 130, 246, 0.15), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| border-color: rgba(59, 130, 246, 0.3); | |
| } | |
| /* Professional Metric Cards */ | |
| .metric-card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.7)); | |
| backdrop-filter: blur(15px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| border-radius: var(--border-radius-lg); | |
| padding: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| transition: all var(--transition-medium); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 25px rgba(0, 0, 0, 0.08), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.4); | |
| } | |
| .metric-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .metric-card:hover::before { | |
| left: 100%; | |
| } | |
| .metric-card:hover { | |
| transform: translateY(-3px) scale(1.02); | |
| box-shadow: | |
| 0 12px 35px rgba(0, 0, 0, 0.12), | |
| 0 0 25px rgba(59, 130, 246, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.5); | |
| border-color: rgba(59, 130, 246, 0.3); | |
| } | |
| /* Enhanced Navigation */ | |
| .nav-tab { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6)); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| border-radius: var(--border-radius-lg); | |
| transition: all var(--transition-medium); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .nav-tab::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 50%; | |
| width: 0; | |
| height: 2px; | |
| background: var(--primary-gradient); | |
| transition: all var(--transition-medium); | |
| transform: translateX(-50%); | |
| } | |
| .nav-tab:hover::after, | |
| .nav-tab.active::after { | |
| width: 100%; | |
| } | |
| .nav-tab.active { | |
| background: var(--primary-gradient); | |
| color: white; | |
| box-shadow: | |
| 0 8px 25px rgba(59, 130, 246, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| animation: pulse-glow 2s infinite; | |
| } | |
| @keyframes pulse-glow { | |
| 0%, 100% { | |
| box-shadow: | |
| 0 8px 25px rgba(59, 130, 246, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| } | |
| 50% { | |
| box-shadow: | |
| 0 12px 35px rgba(59, 130, 246, 0.5), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| } | |
| } | |
| /* Professional Card Styling */ | |
| .card { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.85)); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: | |
| 0 10px 30px rgba(0, 0, 0, 0.08), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.4); | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| transition: all var(--transition-medium); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: var(--primary-gradient); | |
| border-radius: var(--border-radius-xl) var(--border-radius-xl) 0 0; | |
| } | |
| .card:hover { | |
| transform: translateY(-5px) scale(1.01); | |
| box-shadow: | |
| 0 20px 50px rgba(0, 0, 0, 0.12), | |
| 0 0 30px rgba(59, 130, 246, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.5); | |
| border-color: rgba(59, 130, 246, 0.4); | |
| } | |
| /* Enhanced Buttons - InfraVision AI Theme */ | |
| .btn-primary { | |
| background: linear-gradient(135deg, var(--primary), var(--accent-blue)); | |
| border: none; | |
| color: white; | |
| padding: 1rem 2.5rem; | |
| border-radius: var(--border-radius-xl); | |
| font-weight: 700; | |
| font-size: 1rem; | |
| cursor: pointer; | |
| transition: all var(--transition-medium); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 25px rgba(0, 212, 255, 0.4), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| border: 1px solid rgba(0, 212, 255, 0.3); | |
| } | |
| .btn-primary::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); | |
| transition: left 0.6s; | |
| } | |
| .btn-primary:hover::before { | |
| left: 100%; | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px) scale(1.05); | |
| box-shadow: | |
| 0 15px 35px rgba(0, 212, 255, 0.6), | |
| 0 0 40px rgba(139, 92, 246, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| border-color: rgba(0, 212, 255, 0.6); | |
| } | |
| .btn-primary:active { | |
| transform: translateY(-1px) scale(1.02); | |
| } | |
| .btn-secondary { | |
| background: rgba(255, 255, 255, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| color: white; | |
| padding: 1rem 2rem; | |
| border-radius: var(--border-radius-lg); | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all var(--transition-medium); | |
| backdrop-filter: blur(10px); | |
| } | |
| .btn-secondary:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| border-color: rgba(0, 212, 255, 0.5); | |
| box-shadow: 0 8px 25px rgba(0, 212, 255, 0.2); | |
| transform: translateY(-2px); | |
| } | |
| /* Enhanced Loading States */ | |
| .loading-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 4rem; | |
| color: var(--secondary); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.7)); | |
| border-radius: var(--border-radius-xl); | |
| backdrop-filter: blur(15px); | |
| } | |
| .pulse-loader { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| background: var(--primary-gradient); | |
| animation: pulse-scale 1.5s ease-in-out infinite; | |
| margin-bottom: 1.5rem; | |
| position: relative; | |
| } | |
| .pulse-loader::before { | |
| content: ''; | |
| position: absolute; | |
| top: -10px; | |
| left: -10px; | |
| right: -10px; | |
| bottom: -10px; | |
| border-radius: 50%; | |
| border: 2px solid var(--primary); | |
| opacity: 0.3; | |
| animation: pulse-ring 1.5s ease-in-out infinite; | |
| } | |
| @keyframes pulse-scale { | |
| 0%, 100% { transform: scale(1); } | |
| 50% { transform: scale(1.1); } | |
| } | |
| @keyframes pulse-ring { | |
| 0% { transform: scale(0.8); opacity: 0.7; } | |
| 100% { transform: scale(1.2); opacity: 0; } | |
| } | |
| /* Professional Status Bar */ | |
| .status-bar { | |
| background: linear-gradient(135deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.9)); | |
| backdrop-filter: blur(20px); | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| padding: 1rem 2rem; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 2rem; | |
| color: white; | |
| font-size: 0.875rem; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .status-bar::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.6), transparent); | |
| } | |
| .status-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| opacity: 0.9; | |
| transition: opacity var(--transition-fast); | |
| } | |
| .status-item:hover { | |
| opacity: 1; | |
| } | |
| .status-icon.connected { | |
| color: var(--success); | |
| animation: pulse 2s infinite; | |
| } | |
| .status-icon.disconnected { | |
| color: var(--danger); | |
| } | |
| .status-icon.alert { | |
| color: var(--warning); | |
| animation: blink 1s infinite; | |
| } | |
| @keyframes blink { | |
| 0%, 50% { opacity: 1; } | |
| 51%, 100% { opacity: 0.5; } | |
| } | |
| /* Enhanced Hero Section */ | |
| .hero-section { | |
| background-image: | |
| linear-gradient(135deg, rgba(15, 23, 42, 0.95), rgba(30, 41, 59, 0.9)), | |
| url('https://images.unsplash.com/photo-1518005068251-37900150dfca?ixlib=rb-4.0.3&auto=format&fit=crop&w=2070&q=80'); | |
| background-size: cover; | |
| background-position: center; | |
| background-attachment: fixed; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .hero-section::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: | |
| radial-gradient(circle at 30% 20%, rgba(59, 130, 246, 0.2) 0%, transparent 50%), | |
| radial-gradient(circle at 70% 80%, rgba(139, 92, 246, 0.2) 0%, transparent 50%); | |
| z-index: 1; | |
| } | |
| .hero-content { | |
| position: relative; | |
| z-index: 2; | |
| } | |
| /* Professional Footer */ | |
| .app-footer { | |
| background: linear-gradient(135deg, rgba(15, 23, 42, 0.95), rgba(30, 41, 59, 0.9)); | |
| color: white; | |
| padding: 3rem 2rem 1rem; | |
| margin-top: auto; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .app-footer::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.6), transparent); | |
| } | |
| .footer-content { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 2rem; | |
| } | |
| .footer-section h4 { | |
| color: white ; | |
| margin-bottom: 1rem; | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| } | |
| .tech-badge { | |
| display: inline-block; | |
| background: var(--primary-gradient); | |
| color: white; | |
| padding: 0.25rem 0.75rem; | |
| border-radius: var(--border-radius); | |
| font-size: 0.75rem; | |
| font-weight: 500; | |
| margin: 0.25rem 0.25rem 0.25rem 0; | |
| transition: all var(--transition-fast); | |
| } | |
| .tech-badge:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); | |
| } | |
| .social-link { | |
| display: inline-block; | |
| color: rgba(255, 255, 255, 0.8); | |
| text-decoration: none; | |
| margin-right: 1rem; | |
| transition: all var(--transition-fast); | |
| position: relative; | |
| } | |
| .social-link:hover { | |
| color: var(--primary-light); | |
| transform: translateY(-2px); | |
| } | |
| .social-link::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -2px; | |
| left: 0; | |
| width: 0; | |
| height: 1px; | |
| background: var(--primary-light); | |
| transition: width var(--transition-medium); | |
| } | |
| .social-link:hover::after { | |
| width: 100%; | |
| } | |
| /* Professional Form Controls */ | |
| .form-control { | |
| background: rgba(255, 255, 255, 0.9); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| border-radius: var(--border-radius); | |
| padding: 0.75rem; | |
| font-size: 0.95rem; | |
| transition: all var(--transition-medium); | |
| backdrop-filter: blur(10px); | |
| } | |
| .form-control:focus { | |
| outline: none; | |
| border-color: var(--primary); | |
| box-shadow: | |
| 0 0 0 3px rgba(59, 130, 246, 0.1), | |
| 0 4px 12px rgba(59, 130, 246, 0.15); | |
| background: rgba(255, 255, 255, 0.95); | |
| } | |
| /* Enhanced Progress Bar */ | |
| .progress-bar-wrapper { | |
| width: 100%; | |
| height: 8px; | |
| background: rgba(255, 255, 255, 0.2); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .progress-bar-fill { | |
| height: 100%; | |
| background: var(--primary-gradient); | |
| border-radius: 4px; | |
| transition: width 0.5s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .progress-bar-fill::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); | |
| animation: shimmer 2s infinite; | |
| } | |
| /* Responsive Design Enhancements */ | |
| @media (max-width: 768px) { | |
| .hero-content { | |
| grid-template-columns: 1fr; | |
| text-align: center; | |
| gap: 2rem; | |
| } | |
| .hero-title { | |
| font-size: 2.5rem; | |
| } | |
| .nav-tabs { | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .nav-tab { | |
| text-align: center; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .dashboard-container { | |
| padding: 1rem; | |
| min-height: auto; | |
| margin-top: 0; | |
| } | |
| .nav-tabs-container { | |
| margin-bottom: 1rem; | |
| } | |
| .card { | |
| margin-bottom: 1rem; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .hero-title { | |
| font-size: 2rem; | |
| } | |
| .hero-subtitle { | |
| font-size: 1rem; | |
| } | |
| .card { | |
| padding: 1.5rem; | |
| } | |
| .status-bar { | |
| flex-direction: column; | |
| gap: 1rem; | |
| text-align: center; | |
| } | |
| } | |
| /* Analytics Page Styles */ | |
| .analytics-page .glass-header { | |
| background: var(--gradient-indigo); | |
| } | |
| .header-main { | |
| margin-bottom: 1.5rem; | |
| } | |
| .header-controls { | |
| display: flex; | |
| gap: 1rem; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| margin-top: 1rem; | |
| } | |
| .header-content { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| width: 100%; | |
| } | |
| @media (min-width: 768px) { | |
| .header-content { | |
| flex-direction: row; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .header-controls { | |
| margin-top: 0; | |
| } | |
| } | |
| .glass-controls { | |
| background: rgba(255, 255, 255, 0.2); | |
| backdrop-filter: blur(8px); | |
| border-radius: var(--border-radius-lg); | |
| padding: 0.5rem; | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .time-btn { | |
| background: transparent; | |
| border: none; | |
| color: white; | |
| padding: 0.5rem 1rem; | |
| border-radius: var(--border-radius); | |
| cursor: pointer; | |
| transition: var(--transition-fast); | |
| font-weight: 500; | |
| } | |
| .time-btn:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| .time-btn.active { | |
| background: white; | |
| color: var(--primary-dark); | |
| } | |
| .btn-glass { | |
| background: rgba(255, 255, 255, 0.2); | |
| backdrop-filter: blur(8px); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| color: white; | |
| padding: 0.75rem 1.25rem; | |
| border-radius: var(--border-radius-lg); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| transition: var(--transition-medium); | |
| cursor: pointer; | |
| } | |
| .btn-glass:hover { | |
| background: rgba(255, 255, 255, 0.3); | |
| transform: translateY(-2px); | |
| } | |
| .analytics-content { | |
| margin-top: 2rem; | |
| position: relative; | |
| z-index: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 2rem; | |
| max-width: 1400px; | |
| margin-left: auto; | |
| margin-right: auto; | |
| padding: 0 1rem; | |
| } | |
| .pulse-loader { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| background: var(--gradient-blue); | |
| animation: pulse 1.5s ease-in-out infinite; | |
| } | |
| .insights-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); | |
| gap: 1.5rem; | |
| margin-top: 2rem; | |
| width: 100%; | |
| } | |
| .findings-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .finding-item { | |
| display: flex; | |
| gap: 1rem; | |
| align-items: flex-start; | |
| padding: 1rem; | |
| background: rgba(255, 255, 255, 0.5); | |
| border-radius: var(--border-radius); | |
| transition: var(--transition-medium); | |
| } | |
| .finding-item:hover { | |
| background: rgba(255, 255, 255, 0.8); | |
| transform: translateX(5px); | |
| } | |
| .finding-number { | |
| background: var(--gradient-indigo); | |
| color: white; | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 600; | |
| font-size: 0.875rem; | |
| } | |
| .finding-content { | |
| color: var(--secondary); | |
| line-height: 1.5; | |
| } | |
| .recommendations-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .recommendation-item { | |
| display: flex; | |
| gap: 1rem; | |
| align-items: flex-start; | |
| padding: 1rem; | |
| background: rgba(255, 255, 255, 0.5); | |
| border-radius: var(--border-radius); | |
| transition: var(--transition-medium); | |
| } | |
| .recommendation-item:hover { | |
| background: rgba(255, 255, 255, 0.8); | |
| transform: translateX(5px); | |
| } | |
| .recommendation-icon { | |
| width: 32px; | |
| height: 32px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--gradient-blue); | |
| border-radius: var(--border-radius); | |
| color: white; | |
| font-size: 1.25rem; | |
| } | |
| .recommendation-content { | |
| color: var(--secondary); | |
| line-height: 1.5; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 768px) { | |
| .glass-header { | |
| padding: 1.5rem; | |
| text-align: center; | |
| } | |
| .header-controls { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .charts-frame { | |
| grid-template-columns: 1fr; | |
| } | |
| .chart-panel { | |
| min-height: 350px; | |
| } | |
| .recommendation-card { | |
| flex-direction: column; | |
| text-align: center; | |
| } | |
| .recommendation-icon { | |
| margin: 0 auto; | |
| } | |
| .insights-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .finding-item, | |
| .recommendation-item { | |
| flex-direction: column; | |
| align-items: center; | |
| text-align: center; | |
| } | |
| .finding-number, | |
| .recommendation-icon { | |
| margin-bottom: 0.5rem; | |
| } | |
| } | |
| /* Alert Styles */ | |
| .alert { | |
| padding: 1rem 1.5rem; | |
| border-radius: var(--border-radius); | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| font-weight: 500; | |
| } | |
| .alert-error { | |
| background: rgba(239, 68, 68, 0.1); | |
| border: 1px solid rgba(239, 68, 68, 0.2); | |
| color: var(--danger); | |
| } | |
| .alert-success { | |
| background: rgba(16, 185, 129, 0.1); | |
| border: 1px solid rgba(16, 185, 129, 0.2); | |
| color: var(--success); | |
| } | |
| .alert-warning { | |
| background: rgba(245, 158, 11, 0.1); | |
| border: 1px solid rgba(245, 158, 11, 0.2); | |
| color: var(--warning); | |
| } | |
| .alert-info { | |
| background: rgba(14, 165, 233, 0.1); | |
| border: 1px solid rgba(14, 165, 233, 0.2); | |
| color: var(--info); | |
| } | |
| /* Progress Container */ | |
| .progress-container { | |
| background: white; | |
| border-radius: var(--border-radius); | |
| padding: 2rem; | |
| text-align: center; | |
| box-shadow: var(--shadow-sm); | |
| border: 1px solid #e5e7eb; | |
| } | |
| .progress-bar-wrapper { | |
| width: 100%; | |
| height: 8px; | |
| background: #e5e7eb; | |
| border-radius: 4px; | |
| overflow: hidden; | |
| margin-bottom: 1rem; | |
| } | |
| .progress-bar-fill { | |
| height: 100%; | |
| background: var(--primary-gradient); | |
| border-radius: 4px; | |
| transition: width 0.3s ease; | |
| } | |
| .progress-text { | |
| color: var(--secondary); | |
| font-size: 0.875rem; | |
| } | |
| /* Preview Image */ | |
| .preview-image { | |
| width: 100%; | |
| max-height: 600px; | |
| object-fit: contain; | |
| border-radius: var(--border-radius); | |
| border: 1px solid #e5e7eb; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* Badge Styles */ | |
| .badge { | |
| display: inline-block; | |
| padding: 0.4rem 0.75rem; | |
| border-radius: 999px; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| border: 1px solid; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| } | |
| .badge::before { | |
| content: ''; | |
| position: absolute; | |
| top: -50%; | |
| left: -50%; | |
| width: 200%; | |
| height: 200%; | |
| background: radial-gradient(circle, rgba(255, 255, 255, 0.2) 0%, transparent 70%); | |
| animation: badgeShine 3s infinite; | |
| opacity: 0; | |
| } | |
| .badge:hover::before { | |
| opacity: 1; | |
| } | |
| @keyframes badgeShine { | |
| 0% { transform: translate(0, 0); } | |
| 50% { transform: translate(5px, 5px); } | |
| 100% { transform: translate(0, 0); } | |
| } | |
| .bg-success { | |
| background: linear-gradient(135deg, #10b981, #059669); | |
| color: white; | |
| border-color: #047857; | |
| box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); | |
| } | |
| .bg-warning { | |
| background: linear-gradient(135deg, #f59e0b, #d97706); | |
| color: white; | |
| border-color: #b45309; | |
| box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3); | |
| } | |
| .bg-danger { | |
| background: linear-gradient(135deg, #ef4444, #dc2626); | |
| color: white; | |
| border-color: #991b1b; | |
| box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3); | |
| } | |
| .bg-info { | |
| background: linear-gradient(135deg, #3b82f6, #2563eb); | |
| color: white; | |
| border-color: #1e40af; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3); | |
| } | |
| .bg-primary { | |
| background: linear-gradient(135deg, #2563eb, #1e40af); | |
| color: white; | |
| border-color: #1e3a8a; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3); | |
| } | |
| .bg-secondary { | |
| background: linear-gradient(135deg, #64748b, #475569); | |
| color: white; | |
| border-color: #334155; | |
| box-shadow: 0 4px 12px rgba(100, 116, 139, 0.3); | |
| } | |
| /* Probability Bar Styles */ | |
| .probability-item { | |
| margin-bottom: 1rem; | |
| } | |
| .probability-header { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-bottom: 0.5rem; | |
| } | |
| .probability-label { | |
| font-weight: 600; | |
| color: var(--dark); | |
| } | |
| .probability-value { | |
| color: var(--secondary); | |
| } | |
| .probability-bar-container { | |
| width: 100%; | |
| height: 8px; | |
| background: #e5e7eb; | |
| border-radius: 4px; | |
| overflow: hidden; | |
| } | |
| .probability-bar { | |
| height: 100%; | |
| background: var(--primary); | |
| border-radius: 4px; | |
| transition: width 0.3s ease; | |
| } | |
| /* Crack Item Styles */ | |
| .crack-item { | |
| padding: 1rem; | |
| background: var(--light); | |
| border-radius: var(--border-radius); | |
| border: 1px solid #e5e7eb; | |
| margin-bottom: 1rem; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .crack-item span { | |
| font-weight: 600; | |
| color: var(--dark); | |
| } | |
| /* Section Title */ | |
| .section-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| font-size: 1.5rem; | |
| font-weight: 800; | |
| color: #000000; | |
| margin-bottom: 1.5rem; | |
| position: relative; | |
| padding-bottom: 1rem; | |
| } | |
| .section-title::before { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 60px; | |
| height: 4px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4); | |
| border-radius: 2px; | |
| box-shadow: 0 0 12px rgba(37, 99, 235, 0.4); | |
| } | |
| .section-title::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 70px; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, rgba(37, 99, 235, 0.2), transparent); | |
| } | |
| /* Upload Area Large */ | |
| .upload-area-large { | |
| border: 2px dashed #e5e7eb; | |
| border-radius: var(--border-radius); | |
| padding: 3rem; | |
| text-align: center; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| background: var(--light); | |
| } | |
| .upload-area-large:hover { | |
| border-color: var(--primary); | |
| background: rgba(59, 130, 246, 0.05); | |
| } | |
| /* Spinning Animation */ | |
| .spinning { | |
| animation: spin 1s linear infinite; | |
| } | |
| /* Close Button */ | |
| .close-btn { | |
| background: none; | |
| border: none; | |
| font-size: 1.5rem; | |
| cursor: pointer; | |
| color: var(--secondary); | |
| margin-left: auto; | |
| padding: 0; | |
| width: 24px; | |
| height: 24px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 50%; | |
| transition: all 0.2s ease; | |
| } | |
| .close-btn:hover { | |
| background: rgba(0, 0, 0, 0.1); | |
| color: var(--dark); | |
| } | |
| /* Material Classification Styles */ | |
| .material-color-section { | |
| padding: 1.5rem; | |
| background: rgba(255, 255, 255, 0.8); | |
| border-radius: var(--border-radius); | |
| border: 1px solid var(--glass-border); | |
| } | |
| .color-display { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| padding: 1rem; | |
| background: var(--bg-secondary); | |
| border-radius: var(--border-radius); | |
| } | |
| .color-swatch { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 50%; | |
| border: 3px solid var(--glass-border); | |
| box-shadow: 0 4px 12px rgba(0,0,0,0.1); | |
| } | |
| .color-info { | |
| flex: 1; | |
| } | |
| .bar-chart-container { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .bar-chart-item { | |
| padding: 1rem; | |
| background: rgba(255, 255, 255, 0.6); | |
| border-radius: var(--border-radius); | |
| border: 1px solid var(--glass-border); | |
| transition: var(--transition-medium); | |
| } | |
| .bar-chart-item:hover { | |
| background: rgba(255, 255, 255, 0.9); | |
| transform: translateY(-2px); | |
| } | |
| .bar-chart-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 0.75rem; | |
| } | |
| .bar-chart-label { | |
| font-weight: 600; | |
| color: var(--dark); | |
| font-size: 1rem; | |
| } | |
| .bar-chart-value { | |
| color: var(--secondary); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| } | |
| .bar-chart-bar-container { | |
| width: 100%; | |
| height: 14px; | |
| background: rgba(0,0,0,0.1); | |
| border-radius: 7px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .bar-chart-bar { | |
| height: 100%; | |
| border-radius: 7px; | |
| transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .properties-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .property-item { | |
| padding: 1rem; | |
| background: rgba(255, 255, 255, 0.7); | |
| border-radius: var(--border-radius); | |
| border: 1px solid var(--glass-border); | |
| transition: var(--transition-medium); | |
| } | |
| .property-item:hover { | |
| background: rgba(255, 255, 255, 0.9); | |
| transform: translateY(-1px); | |
| } | |
| /* Settings Styles */ | |
| .settings-section { | |
| padding: 2rem; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.85) 100%); | |
| border-radius: var(--border-radius-lg); | |
| border: 1.5px solid rgba(37, 99, 235, 0.12); | |
| box-shadow: | |
| 0 8px 20px rgba(37, 99, 235, 0.1), | |
| 0 2px 8px rgba(37, 99, 235, 0.05), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.8); | |
| position: relative; | |
| overflow: hidden; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .settings-section::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4, #2563eb); | |
| animation: gradientShift 3s ease infinite; | |
| } | |
| .settings-section:hover { | |
| box-shadow: | |
| 0 12px 30px rgba(37, 99, 235, 0.15), | |
| 0 4px 12px rgba(37, 99, 235, 0.08), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.9); | |
| } | |
| .settings-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 2rem; | |
| } | |
| .setting-item { | |
| padding: 1.5rem; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(248, 250, 252, 0.6) 100%); | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.1); | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.05); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| } | |
| .setting-item:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 24px rgba(37, 99, 235, 0.12); | |
| border-color: rgba(37, 99, 235, 0.2); | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.8) 100%); | |
| } | |
| .setting-item label { | |
| display: block; | |
| font-weight: 600; | |
| color: var(--dark); | |
| margin-bottom: 0.75rem; | |
| font-size: 0.95rem; | |
| } | |
| .setting-item input[type="range"] { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 100%; | |
| height: 6px; | |
| border-radius: 3px; | |
| background: var(--glass-border); | |
| outline: none; | |
| margin-bottom: 0.5rem; | |
| } | |
| .setting-item input[type="range"]::-webkit-slider-thumb { | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| cursor: pointer; | |
| box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3); | |
| } | |
| .setting-item input[type="range"]::-moz-range-thumb { | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| cursor: pointer; | |
| border: none; | |
| box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3); | |
| } | |
| /* Footer Styles */ | |
| .app-footer { | |
| background: linear-gradient(135deg, #ffffff 0%, #f8fafc 50%, #f1f5f9 100%); | |
| border-top: 2px solid #2563eb; | |
| margin-top: 4rem; | |
| padding: 3rem 0 1.5rem 0; | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: 0 -4px 20px rgba(37, 99, 235, 0.1); | |
| } | |
| .app-footer::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, transparent, #2563eb, #06b6d4, #2563eb, transparent); | |
| box-shadow: 0 0 20px rgba(37, 99, 235, 0.5); | |
| } | |
| .app-footer::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.2), transparent); | |
| } | |
| .footer-content { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 3rem; | |
| padding: 0 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| .footer-section h4 { | |
| color: #2563eb; | |
| margin-bottom: 1rem; | |
| font-size: 1.1rem; | |
| font-weight: 800; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| position: relative; | |
| padding-bottom: 0.75rem; | |
| } | |
| .footer-section h4::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 40px; | |
| height: 2px; | |
| background: linear-gradient(90deg, #2563eb, #06b6d4); | |
| border-radius: 1px; | |
| } | |
| .footer-section p { | |
| color: #64748b; | |
| line-height: 1.7; | |
| margin-bottom: 1rem; | |
| font-weight: 500; | |
| } | |
| .footer-links { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| } | |
| .footer-links a { | |
| color: #64748b; | |
| text-decoration: none; | |
| transition: all 0.3s ease; | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| position: relative; | |
| padding-left: 0.5rem; | |
| } | |
| .footer-links a::before { | |
| content: '→'; | |
| position: absolute; | |
| left: -1rem; | |
| color: #06b6d4; | |
| opacity: 0; | |
| transition: all 0.3s ease; | |
| } | |
| .footer-links a:hover { | |
| color: #2563eb; | |
| padding-left: 1rem; | |
| } | |
| .footer-links a:hover::before { | |
| opacity: 1; | |
| left: 0; | |
| } | |
| .tech-stack { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.5rem; | |
| } | |
| .tech-badge { | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.15), rgba(6, 182, 212, 0.08)); | |
| color: #2563eb; | |
| padding: 0.4rem 0.9rem; | |
| border-radius: 999px; | |
| font-size: 0.8rem; | |
| font-weight: 700; | |
| border: 1.5px solid rgba(37, 99, 235, 0.25); | |
| transition: all 0.3s ease; | |
| box-shadow: 0 2px 8px rgba(37, 99, 235, 0.1); | |
| text-transform: uppercase; | |
| letter-spacing: 0.2px; | |
| } | |
| .tech-badge:hover { | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.25), rgba(6, 182, 212, 0.15)); | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2); | |
| border-color: rgba(37, 99, 235, 0.4); | |
| transform: translateY(-2px); | |
| } | |
| .social-links { | |
| display: flex; | |
| gap: 1rem; | |
| } | |
| .social-link { | |
| color: var(--primary); | |
| text-decoration: none; | |
| font-weight: 500; | |
| transition: var(--transition-fast); | |
| padding: 0.5rem 1rem; | |
| border-radius: var(--border-radius); | |
| background: rgba(59, 130, 246, 0.1); | |
| border: 1px solid rgba(59, 130, 246, 0.2); | |
| } | |
| .social-link:hover { | |
| background: var(--primary); | |
| color: white; | |
| transform: translateY(-1px); | |
| } | |
| .footer-bottom { | |
| border-top: 2px solid rgba(37, 99, 235, 0.2); | |
| padding-top: 2.5rem; | |
| text-align: center; | |
| background: linear-gradient(180deg, rgba(37, 99, 235, 0.02), transparent); | |
| margin: 2rem 2rem 0 2rem; | |
| padding-bottom: 1.5rem; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .footer-bottom::before { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.2), transparent); | |
| } | |
| .footer-bottom p { | |
| color: #475569; | |
| font-size: 0.95rem; | |
| margin: 0.75rem 0 1rem 0; | |
| font-weight: 600; | |
| letter-spacing: 0.3px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| /* SDG Badges Styles */ | |
| .sdg-badges { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| gap: 1.5rem; | |
| margin: 1.5rem 0; | |
| flex-wrap: wrap; | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .sdg-badge { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 70px; | |
| height: 70px; | |
| border-radius: 8px; | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.1), rgba(6, 182, 212, 0.08)); | |
| border: 2px solid rgba(37, 99, 235, 0.3); | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| cursor: pointer; | |
| box-shadow: 0 4px 15px rgba(37, 99, 235, 0.15); | |
| } | |
| .sdg-badge::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .sdg-badge:hover::before { | |
| left: 100%; | |
| } | |
| .sdg-badge:hover { | |
| transform: translateY(-8px) scale(1.1); | |
| border-color: rgba(37, 99, 235, 0.6); | |
| box-shadow: 0 12px 35px rgba(37, 99, 235, 0.3), 0 0 30px rgba(6, 182, 212, 0.2); | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.2), rgba(6, 182, 212, 0.15)); | |
| } | |
| .sdg-badge svg { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: contain; | |
| padding: 4px; | |
| } | |
| .sdg-badge span { | |
| position: absolute; | |
| bottom: -25px; | |
| font-size: 0.65rem; | |
| font-weight: 700; | |
| color: #2563eb; | |
| white-space: nowrap; | |
| opacity: 0; | |
| transition: all 0.3s ease; | |
| } | |
| .sdg-badge:hover span { | |
| bottom: -45px; | |
| opacity: 1; | |
| } | |
| /* Responsive Footer */ | |
| @media (max-width: 768px) { | |
| .app-footer { | |
| padding: 2rem 0 1rem 0; | |
| } | |
| .footer-content { | |
| grid-template-columns: 1fr; | |
| gap: 1.5rem; | |
| padding: 0 1rem; | |
| } | |
| .footer-section { | |
| text-align: center; | |
| } | |
| .tech-stack { | |
| justify-content: center; | |
| } | |
| .social-links { | |
| justify-content: center; | |
| } | |
| .footer-bottom p { | |
| font-size: 0.8rem; | |
| } | |
| } | |
| /* Video Analysis Styles */ | |
| .video-grid { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr; | |
| gap: 2rem; | |
| margin-top: 2rem; | |
| } | |
| .video-preview-section { | |
| text-align: center; | |
| } | |
| .processing-section { | |
| text-align: center; | |
| padding: 2rem; | |
| } | |
| .video-results { | |
| margin-top: 2rem; | |
| } | |
| .frame-grid { | |
| margin-top: 1rem; | |
| } | |
| .frame-card { | |
| transition: var(--transition-medium); | |
| } | |
| .frame-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(0,0,0,0.1); | |
| } | |
| .results-sidebar { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .detection-card { | |
| transition: var(--transition-medium); | |
| } | |
| .detection-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(0,0,0,0.1); | |
| } | |
| .stream-placeholder { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 4rem 2rem; | |
| background: var(--light); | |
| border-radius: var(--border-radius); | |
| border: 2px dashed #e5e7eb; | |
| color: var(--secondary); | |
| text-align: center; | |
| } | |
| .stream-placeholder svg { | |
| margin-bottom: 1rem; | |
| opacity: 0.5; | |
| } | |
| .stream-content { | |
| position: relative; | |
| } | |
| /* Responsive adjustments for video analysis */ | |
| @media (max-width: 768px) { | |
| .video-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .frame-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| /* Status Bar Styles */ | |
| .status-bar { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| background: rgba(0, 0, 0, 0.8); | |
| backdrop-filter: blur(10px); | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| padding: 0.75rem 2rem; | |
| display: flex; | |
| justify-content: center; | |
| gap: 2rem; | |
| flex-wrap: wrap; | |
| } | |
| .status-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| color: rgba(255, 255, 255, 0.9); | |
| font-size: 0.9rem; | |
| } | |
| .status-icon { | |
| transition: all 0.3s ease; | |
| } | |
| .status-icon.connected { | |
| color: #10b981; | |
| } | |
| .status-icon.disconnected { | |
| color: #ef4444; | |
| } | |
| .status-icon.alert { | |
| color: #f59e0b; | |
| animation: pulse 2s infinite; | |
| } | |
| .status-text { | |
| font-weight: 500; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| /* Professional Analytics Dashboard Styles */ | |
| .professional-analytics-dashboard { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 2rem; | |
| padding: 0; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| } | |
| /* Executive Summary Section */ | |
| .executive-summary { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.9)); | |
| border-radius: 20px; | |
| padding: 2rem; | |
| border: 1px solid rgba(226, 232, 240, 0.5); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.04); | |
| backdrop-filter: blur(20px); | |
| margin-bottom: 1rem; | |
| } | |
| .summary-header { | |
| text-align: center; | |
| margin-bottom: 2rem; | |
| } | |
| .summary-header h2 { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: #1e293b; | |
| margin-bottom: 0.5rem; | |
| letter-spacing: -0.025em; | |
| } | |
| .summary-header p { | |
| font-size: 1.1rem; | |
| color: #64748b; | |
| font-weight: 500; | |
| margin: 0; | |
| } | |
| /* KPI Grid */ | |
| .kpi-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .kpi-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| padding: 1.5rem; | |
| border-radius: 16px; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(248, 250, 252, 0.7)); | |
| border: 1px solid rgba(226, 232, 240, 0.6); | |
| box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06), 0 2px 8px rgba(0, 0, 0, 0.04); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .kpi-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 4px; | |
| background: var(--accent-color); | |
| transition: height 0.3s ease; | |
| } | |
| .kpi-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 4px 12px rgba(0, 0, 0, 0.06); | |
| } | |
| .kpi-card:hover::before { | |
| height: 6px; | |
| } | |
| .kpi-card.primary { | |
| --accent-color: #10b981; | |
| } | |
| .kpi-card.warning { | |
| --accent-color: #f59e0b; | |
| } | |
| .kpi-card.success { | |
| --accent-color: #3b82f6; | |
| } | |
| .kpi-card.info { | |
| --accent-color: #8b5cf6; | |
| } | |
| .kpi-icon { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 56px; | |
| height: 56px; | |
| border-radius: 14px; | |
| background: linear-gradient(135deg, var(--accent-color), rgba(var(--accent-color), 0.8)); | |
| color: white; | |
| box-shadow: 0 4px 12px rgba(var(--accent-color), 0.3); | |
| } | |
| .kpi-content { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.25rem; | |
| } | |
| .kpi-value { | |
| font-size: 2rem; | |
| font-weight: 800; | |
| color: #1e293b; | |
| line-height: 1; | |
| letter-spacing: -0.025em; | |
| } | |
| .kpi-label { | |
| font-size: 0.875rem; | |
| font-weight: 600; | |
| color: #64748b; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .kpi-unit { | |
| font-size: 0.75rem; | |
| color: #94a3b8; | |
| font-weight: 500; | |
| } | |
| .kpi-trend { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| padding: 0.25rem 0.5rem; | |
| border-radius: 8px; | |
| white-space: nowrap; | |
| } | |
| .kpi-trend.positive { | |
| color: #10b981; | |
| background: rgba(16, 185, 129, 0.1); | |
| } | |
| .kpi-trend.negative { | |
| color: #ef4444; | |
| background: rgba(239, 68, 68, 0.1); | |
| } | |
| .kpi-trend.neutral { | |
| color: #64748b; | |
| background: rgba(100, 116, 139, 0.1); | |
| } | |
| /* Analytics Grid */ | |
| .analytics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .chart-panel { | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.9)); | |
| border-radius: 20px; | |
| border: 1px solid rgba(226, 232, 240, 0.5); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08), 0 4px 16px rgba(0, 0, 0, 0.04); | |
| backdrop-filter: blur(20px); | |
| overflow: hidden; | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .chart-panel:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12), 0 6px 20px rgba(0, 0, 0, 0.06); | |
| } | |
| .chart-panel.large { | |
| grid-column: span 2; | |
| } | |
| @media (max-width: 1200px) { | |
| .chart-panel.large { | |
| grid-column: span 1; | |
| } | |
| } | |
| .panel-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| padding: 1.5rem 1.5rem 1rem; | |
| border-bottom: 1px solid rgba(226, 232, 240, 0.5); | |
| } | |
| .header-content h3 { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| font-size: 1.25rem; | |
| font-weight: 700; | |
| color: #1e293b; | |
| margin: 0 0 0.25rem; | |
| letter-spacing: -0.025em; | |
| } | |
| .header-content p { | |
| font-size: 0.875rem; | |
| color: #64748b; | |
| font-weight: 500; | |
| margin: 0; | |
| } | |
| .chart-controls { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .control-btn { | |
| padding: 0.375rem 0.75rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| border-radius: 8px; | |
| background: rgba(248, 250, 252, 0.8); | |
| color: #64748b; | |
| border: 1px solid rgba(226, 232, 240, 0.6); | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .control-btn:hover { | |
| background: rgba(241, 245, 249, 0.9); | |
| color: #475569; | |
| } | |
| .control-btn.active { | |
| background: #3b82f6; | |
| color: white; | |
| border-color: #3b82f6; | |
| box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3); | |
| } | |
| .panel-body { | |
| padding: 1.5rem; | |
| height: 350px; | |
| } | |
| .panel-body > div { | |
| height: 100%; | |
| } | |
| /* Statistical Analysis Styles */ | |
| .stats-container { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: 1.5rem; | |
| height: 100%; | |
| overflow-y: auto; | |
| } | |
| .stat-group { | |
| padding: 1rem; | |
| background: rgba(248, 250, 252, 0.5); | |
| border-radius: 12px; | |
| border: 1px solid rgba(226, 232, 240, 0.5); | |
| } | |
| .stat-group h4 { | |
| font-size: 1rem; | |
| font-weight: 700; | |
| color: #1e293b; | |
| margin: 0 0 1rem; | |
| letter-spacing: -0.025em; | |
| } | |
| .stat-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.5rem 0; | |
| border-bottom: 1px solid rgba(226, 232, 240, 0.3); | |
| } | |
| .stat-row:last-child { | |
| border-bottom: none; | |
| } | |
| .stat-label { | |
| font-size: 0.875rem; | |
| color: #64748b; | |
| font-weight: 500; | |
| } | |
| .stat-value { | |
| font-size: 0.875rem; | |
| font-weight: 700; | |
| color: #1e293b; | |
| } | |
| .decision-reject { | |
| color: #ef4444 ; | |
| background: rgba(239, 68, 68, 0.1); | |
| padding: 0.25rem 0.5rem; | |
| border-radius: 6px; | |
| font-size: 0.75rem; | |
| } | |
| /* Confidence Interval Visualization */ | |
| .ci-visualization { | |
| margin-top: 1rem; | |
| } | |
| .ci-bar { | |
| position: relative; | |
| height: 8px; | |
| background: rgba(226, 232, 240, 0.5); | |
| border-radius: 4px; | |
| margin-bottom: 0.5rem; | |
| } | |
| .ci-range { | |
| position: absolute; | |
| height: 100%; | |
| background: linear-gradient(90deg, #3b82f6, #10b981); | |
| border-radius: 4px; | |
| box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3); | |
| } | |
| .ci-point { | |
| position: absolute; | |
| top: -2px; | |
| width: 12px; | |
| height: 12px; | |
| background: #ef4444; | |
| border-radius: 50%; | |
| border: 2px solid white; | |
| box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); | |
| transform: translateX(-50%); | |
| } | |
| .ci-labels { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| color: #64748b; | |
| } | |
| /* ANOVA Table */ | |
| .anova-table { | |
| margin-top: 1.5rem; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(248, 250, 252, 0.6) 100%); | |
| border-radius: var(--border-radius-lg); | |
| border: 1px solid rgba(37, 99, 235, 0.1); | |
| overflow: hidden; | |
| box-shadow: 0 4px 12px rgba(37, 99, 235, 0.05); | |
| } | |
| .anova-row { | |
| display: grid; | |
| grid-template-columns: 1fr 80px 80px 80px; | |
| gap: 1rem; | |
| padding: 0.75rem 1rem; | |
| border-bottom: 1px solid rgba(37, 99, 235, 0.08); | |
| font-size: 0.875rem; | |
| align-items: center; | |
| transition: all 0.2s ease; | |
| } | |
| .anova-row:hover { | |
| background: rgba(37, 99, 235, 0.03); | |
| } | |
| .anova-row.header { | |
| font-weight: 800; | |
| color: #2563eb; | |
| background: linear-gradient(135deg, rgba(37, 99, 235, 0.08), rgba(6, 182, 212, 0.05)); | |
| padding: 1rem; | |
| border-radius: 0; | |
| margin-bottom: 0; | |
| border: none; | |
| border-bottom: 2px solid rgba(37, 99, 235, 0.2); | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .anova-row span { | |
| display: flex; | |
| align-items: center; | |
| } | |
| .significant { | |
| color: #10b981; | |
| font-weight: 600; | |
| background: rgba(16, 185, 129, 0.1); | |
| padding: 0.25rem 0.5rem; | |
| border-radius: 4px; | |
| text-align: center; | |
| } | |
| /* Dynamic Analytics Dashboard Styles */ | |
| .dynamic-analytics-dashboard { | |
| padding: 2rem 0; | |
| } | |
| .analytics-nav { | |
| display: flex; | |
| gap: 1rem; | |
| margin-bottom: 2rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| padding: 1rem; | |
| box-shadow: var(--shadow-glass); | |
| justify-content: center; | |
| flex-wrap: wrap; | |
| } | |
| .nav-btn { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 1rem 1.5rem; | |
| border: none; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--text-secondary); | |
| border-radius: var(--border-radius-lg); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| font-weight: 500; | |
| font-size: 0.9rem; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .nav-btn::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); | |
| transition: left 0.6s ease; | |
| } | |
| .nav-btn:hover::before { | |
| left: 100%; | |
| } | |
| .nav-btn:hover { | |
| background: var(--glass-bg-strong); | |
| transform: translateY(-2px); | |
| color: var(--primary); | |
| } | |
| .nav-btn.active { | |
| background: var(--gradient-primary); | |
| color: white; | |
| box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4); | |
| } | |
| /* Overview Section Styles */ | |
| .overview-section { | |
| padding: 2rem 0; | |
| } | |
| .metrics-hero { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 2rem; | |
| margin-bottom: 3rem; | |
| } | |
| .hero-metric { | |
| display: flex; | |
| align-items: center; | |
| gap: 1.5rem; | |
| padding: 2rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: var(--shadow-glass); | |
| transition: all 0.3s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .hero-metric::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 4px; | |
| height: 100%; | |
| background: var(--primary); | |
| transition: all 0.3s ease; | |
| } | |
| .hero-metric.primary::before { background: var(--primary); } | |
| .hero-metric.warning::before { background: var(--warning); } | |
| .hero-metric.success::before { background: var(--success); } | |
| .hero-metric.info::before { background: var(--info); } | |
| .hero-metric:hover { | |
| transform: translateY(-5px); | |
| box-shadow: var(--shadow-glass-hover); | |
| } | |
| .hero-metric:hover::before { | |
| width: 8px; | |
| } | |
| .metric-icon { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| flex-shrink: 0; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); | |
| } | |
| .hero-metric.primary .metric-icon { background: var(--gradient-primary); } | |
| .hero-metric.warning .metric-icon { background: var(--warning-gradient); } | |
| .hero-metric.success .metric-icon { background: var(--success-gradient); } | |
| .hero-metric.info .metric-icon { background: var(--info-gradient); } | |
| .metric-content { | |
| flex: 1; | |
| } | |
| .metric-value { | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| color: var(--dark); | |
| margin-bottom: 0.25rem; | |
| line-height: 1; | |
| } | |
| .metric-label { | |
| font-size: 1rem; | |
| color: var(--secondary); | |
| margin-bottom: 0.5rem; | |
| font-weight: 500; | |
| } | |
| .metric-trend { | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| padding: 0.25rem 0.5rem; | |
| border-radius: var(--border-radius-sm); | |
| display: inline-block; | |
| } | |
| .metric-trend.positive { | |
| background: rgba(16, 185, 129, 0.1); | |
| color: var(--success); | |
| } | |
| .metric-trend.negative { | |
| background: rgba(239, 68, 68, 0.1); | |
| color: var(--danger); | |
| } | |
| .metric-trend.neutral { | |
| background: rgba(100, 116, 139, 0.1); | |
| color: var(--secondary); | |
| } | |
| /* Enhanced Chart Card Styles */ | |
| .chart-card { | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: var(--shadow-glass); | |
| overflow: hidden; | |
| transition: all 0.3s ease; | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .chart-card:hover { | |
| transform: translateY(-3px); | |
| box-shadow: var(--shadow-glass-hover); | |
| } | |
| .chart-card.large { | |
| grid-column: span 2; | |
| } | |
| .card-header { | |
| padding: 1.5rem 2rem 1rem 2rem; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .card-header h3 { | |
| margin: 0; | |
| color: var(--dark); | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .chart-controls { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .time-range { | |
| padding: 0.25rem 0.75rem; | |
| border-radius: var(--border-radius-sm); | |
| font-size: 0.75rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--secondary); | |
| } | |
| .time-range:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| color: var(--primary); | |
| } | |
| .time-range.active { | |
| background: var(--primary); | |
| color: white; | |
| } | |
| .card-body { | |
| padding: 1.5rem 2rem 2rem 2rem; | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* Metrics Grid for Circular Progress */ | |
| .metrics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 2rem; | |
| padding: 2rem 0; | |
| } | |
| .metric-item { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| text-align: center; | |
| } | |
| .metric-circle { | |
| width: 80px; | |
| height: 80px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.2rem; | |
| font-weight: 700; | |
| color: var(--primary); | |
| margin-bottom: 0.75rem; | |
| background: conic-gradient(var(--primary) 0% var(--percentage), rgba(0, 0, 0, 0.1) var(--percentage) 100%); | |
| position: relative; | |
| } | |
| .metric-circle::before { | |
| content: ''; | |
| position: absolute; | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 50%; | |
| background: white; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| } | |
| .metric-circle span { | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .metric-name { | |
| font-size: 0.875rem; | |
| color: var(--secondary); | |
| font-weight: 500; | |
| } | |
| /* Risk Assessment Matrix */ | |
| .risk-matrix { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| padding: 1rem 0; | |
| } | |
| .risk-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 1rem; | |
| border-radius: var(--border-radius); | |
| transition: all 0.3s ease; | |
| } | |
| .risk-item.high { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.1), rgba(239, 68, 68, 0.05)); | |
| border-left: 4px solid var(--danger); | |
| } | |
| .risk-item.medium { | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.1), rgba(245, 158, 11, 0.05)); | |
| border-left: 4px solid var(--warning); | |
| } | |
| .risk-item.low { | |
| background: linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.05)); | |
| border-left: 4px solid var(--success); | |
| } | |
| .risk-label { | |
| font-weight: 600; | |
| color: var(--dark); | |
| } | |
| .risk-value { | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| color: var(--primary); | |
| } | |
| /* Section Headers */ | |
| .section-header { | |
| text-align: center; | |
| margin-bottom: 3rem; | |
| padding: 2rem; | |
| background: var(--glass-gradient); | |
| backdrop-filter: blur(20px); | |
| border: var(--border-glass); | |
| border-radius: var(--border-radius-xl); | |
| box-shadow: var(--shadow-glass); | |
| } | |
| .section-header h2 { | |
| color: var(--dark); | |
| font-size: 2rem; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| } | |
| .section-header p { | |
| color: var(--secondary); | |
| font-size: 1.1rem; | |
| margin: 0; | |
| max-width: 600px; | |
| margin: 0 auto; | |
| } | |
| /* Charts Grid */ | |
| .charts-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 768px) { | |
| .analytics-nav { | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .nav-btn { | |
| justify-content: center; | |
| } | |
| .metrics-hero { | |
| grid-template-columns: 1fr; | |
| } | |
| .hero-metric { | |
| flex-direction: column; | |
| text-align: center; | |
| gap: 1rem; | |
| } | |
| .charts-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .chart-card.large { | |
| grid-column: span 1; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: 1fr; | |
| gap: 1rem; | |
| } | |
| .section-header h2 { | |
| font-size: 1.5rem; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| } | |
| /* Chart Error Handling */ | |
| .chart-error { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 2rem; | |
| background: rgba(239, 68, 68, 0.1); | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| border-radius: 12px; | |
| color: #fca5a5; | |
| font-size: 0.875rem; | |
| text-align: center; | |
| min-height: 200px; | |
| backdrop-filter: blur(10px); | |
| } | |
| /* Analytics Dashboard Ultra-Professional Styling */ | |
| .analytics-page { | |
| background: linear-gradient(135deg, #0a0e27 0%, #1a1b3a 25%, #2d1b69 50%, #0f172a 75%, #1e293b 100%); | |
| min-height: 100vh; | |
| padding: 2.5rem; | |
| position: relative; | |
| overflow-x: hidden; | |
| font-family: 'Inter', 'SF Pro Display', 'Segoe UI', 'Helvetica Neue', 'Arial', system-ui, sans-serif; | |
| color: #ffffff; | |
| line-height: 1.6; | |
| letter-spacing: -0.01em; | |
| /* Advanced backdrop effects */ | |
| &::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: | |
| radial-gradient(circle at 20% 30%, rgba(59, 130, 246, 0.18) 0%, transparent 50%), | |
| radial-gradient(circle at 80% 70%, rgba(139, 92, 246, 0.15) 0%, transparent 50%), | |
| radial-gradient(circle at 40% 90%, rgba(16, 185, 129, 0.12) 0%, transparent 50%), | |
| radial-gradient(circle at 70% 20%, rgba(245, 158, 11, 0.08) 0%, transparent 50%); | |
| pointer-events: none; | |
| z-index: -1; | |
| animation: gradient-shift 15s ease-in-out infinite; | |
| } | |
| /* Animated background particles */ | |
| &::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background-image: | |
| radial-gradient(2px 2px at 20px 30px, rgba(255,255,255,0.15), transparent), | |
| radial-gradient(2px 2px at 40px 70px, rgba(255,255,255,0.1), transparent), | |
| radial-gradient(1px 1px at 90px 40px, rgba(255,255,255,0.2), transparent), | |
| radial-gradient(1px 1px at 130px 80px, rgba(255,255,255,0.08), transparent), | |
| radial-gradient(3px 3px at 200px 120px, rgba(59, 130, 246, 0.1), transparent); | |
| background-repeat: repeat; | |
| background-size: 200px 200px; | |
| animation: float-particles 25s linear infinite; | |
| pointer-events: none; | |
| z-index: -1; | |
| } | |
| } | |
| @keyframes gradient-shift { | |
| 0%, 100% { opacity: 1; } | |
| 25% { opacity: 0.8; } | |
| 50% { opacity: 0.9; } | |
| 75% { opacity: 0.85; } | |
| } | |
| @keyframes float-particles { | |
| 0% { transform: translateY(0px) translateX(0px) rotate(0deg); } | |
| 25% { transform: translateY(-50px) translateX(25px) rotate(90deg); } | |
| 50% { transform: translateY(-100px) translateX(50px) rotate(180deg); } | |
| 75% { transform: translateY(-150px) translateX(75px) rotate(270deg); } | |
| 100% { transform: translateY(-200px) translateX(100px) rotate(360deg); } | |
| } | |
| .glass-header { | |
| background: rgba(15, 23, 42, 0.8); | |
| backdrop-filter: blur(20px); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| padding: 2rem 0; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .glass-header::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient(45deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 197, 253, 0.05) 100%); | |
| animation: shimmer 3s ease-in-out infinite; | |
| } | |
| @keyframes shimmer { | |
| 0%, 100% { opacity: 0.5; } | |
| 50% { opacity: 1; } | |
| } | |
| .header-content { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 2rem; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .header-main h1 { | |
| font-size: 2.5rem; | |
| font-weight: 800; | |
| background: linear-gradient(135deg, #ffffff 0%, #60a5fa 50%, #3b82f6 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| margin-bottom: 0.5rem; | |
| animation: fadeInUp 1s ease-out; | |
| } | |
| .header-main p { | |
| font-size: 1.125rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| margin: 0; | |
| animation: fadeInUp 1s ease-out 0.2s both; | |
| } | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .professional-analytics-dashboard { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| padding: 2rem; | |
| animation: fadeIn 1.5s ease-out; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| /* Executive Summary */ | |
| .executive-summary { | |
| margin-bottom: 3rem; | |
| animation: slideInLeft 1s ease-out; | |
| } | |
| @keyframes slideInLeft { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-50px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| .summary-header { | |
| text-align: center; | |
| margin-bottom: 2rem; | |
| } | |
| .summary-header h2 { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: #ffffff; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| } | |
| .summary-header p { | |
| font-size: 1.1rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| margin: 0; | |
| } | |
| .kpi-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| .kpi-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 16px; | |
| padding: 1.5rem; | |
| position: relative; | |
| overflow: hidden; | |
| transition: all 0.3s ease; | |
| animation: floatUp 2s ease-out infinite; | |
| } | |
| @keyframes floatUp { | |
| 0%, 100% { transform: translateY(0px); } | |
| 50% { transform: translateY(-5px); } | |
| } | |
| .kpi-card:hover { | |
| transform: translateY(-8px); | |
| box-shadow: 0 20px 40px rgba(59, 130, 246, 0.3); | |
| border-color: rgba(59, 130, 246, 0.5); | |
| } | |
| .kpi-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 3px; | |
| background: linear-gradient(90deg, #3b82f6, #60a5fa, #93c5fd); | |
| animation: pulse 2s ease-in-out infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 0.5; } | |
| 50% { opacity: 1; } | |
| } | |
| .kpi-icon { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin-bottom: 1rem; | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(147, 197, 253, 0.6)); | |
| color: #ffffff; | |
| animation: rotate 4s linear infinite; | |
| } | |
| @keyframes rotate { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| .kpi-content { | |
| flex: 1; | |
| } | |
| .kpi-value { | |
| font-size: 2.5rem; | |
| font-weight: 800; | |
| color: #ffffff; | |
| line-height: 1; | |
| margin-bottom: 0.5rem; | |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); | |
| } | |
| .kpi-label { | |
| font-size: 0.875rem; | |
| font-weight: 600; | |
| color: rgba(255, 255, 255, 0.8); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| margin-bottom: 0.25rem; | |
| } | |
| .kpi-unit { | |
| font-size: 0.75rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| font-weight: 500; | |
| } | |
| .kpi-trend { | |
| position: absolute; | |
| top: 1rem; | |
| right: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| padding: 0.25rem 0.5rem; | |
| border-radius: 20px; | |
| background: rgba(255, 255, 255, 0.1); | |
| backdrop-filter: blur(5px); | |
| } | |
| .kpi-trend.positive { | |
| color: #10b981; | |
| } | |
| .kpi-trend.neutral { | |
| color: #f59e0b; | |
| } | |
| .kpi-trend.negative { | |
| color: #ef4444; | |
| } | |
| /* Analytics Grid */ | |
| .analytics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| .chart-panel { | |
| background: rgba(255, 255, 255, 0.05); | |
| backdrop-filter: blur(15px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 16px; | |
| overflow: hidden; | |
| transition: all 0.3s ease; | |
| animation: slideInUp 1s ease-out; | |
| animation-fill-mode: both; | |
| } | |
| @keyframes slideInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .chart-panel:nth-child(1) { animation-delay: 0.1s; } | |
| .chart-panel:nth-child(2) { animation-delay: 0.2s; } | |
| .chart-panel:nth-child(3) { animation-delay: 0.3s; } | |
| .chart-panel:nth-child(4) { animation-delay: 0.4s; } | |
| .chart-panel:nth-child(5) { animation-delay: 0.5s; } | |
| .chart-panel:nth-child(6) { animation-delay: 0.6s; } | |
| .chart-panel.large { | |
| grid-column: span 2; | |
| } | |
| .chart-panel:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 15px 30px rgba(59, 130, 246, 0.2); | |
| border-color: rgba(59, 130, 246, 0.4); | |
| } | |
| .panel-header { | |
| padding: 1.5rem; | |
| background: rgba(255, 255, 255, 0.02); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .header-content h3 { | |
| font-size: 1.25rem; | |
| font-weight: 700; | |
| color: #ffffff; | |
| margin: 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .header-content p { | |
| font-size: 0.875rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| margin: 0.25rem 0 0 0; | |
| } | |
| .panel-body { | |
| padding: 1.5rem; | |
| min-height: 300px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| /* Chart Controls */ | |
| .chart-controls { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .control-btn { | |
| padding: 0.5rem 1rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| border-radius: 20px; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: rgba(255, 255, 255, 0.7); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .control-btn:hover, | |
| .control-btn.active { | |
| background: rgba(59, 130, 246, 0.8); | |
| color: #ffffff; | |
| border-color: rgba(59, 130, 246, 1); | |
| } | |
| /* Statistics Container */ | |
| .stats-container { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| width: 100%; | |
| } | |
| .stat-group { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: 12px; | |
| padding: 1.5rem; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .stat-group h4 { | |
| color: #ffffff; | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| margin-bottom: 1rem; | |
| } | |
| .stat-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.75rem 0; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .stat-label { | |
| color: rgba(255, 255, 255, 0.8); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| } | |
| .stat-value { | |
| color: #ffffff; | |
| font-weight: 700; | |
| font-size: 0.875rem; | |
| } | |
| .decision-reject { | |
| color: #ef4444; | |
| } | |
| .significant { | |
| color: #10b981; | |
| } | |
| /* Floating Animation Elements */ | |
| .floating-element { | |
| position: fixed; | |
| pointer-events: none; | |
| z-index: 0; | |
| opacity: 0.1; | |
| } | |
| .floating-element-1 { | |
| top: 10%; | |
| right: 10%; | |
| animation: float 6s ease-in-out infinite; | |
| } | |
| .floating-element-2 { | |
| bottom: 20%; | |
| left: 15%; | |
| animation: float 8s ease-in-out infinite reverse; | |
| } | |
| @keyframes float { | |
| 0%, 100% { transform: translateY(0px) rotate(0deg); } | |
| 50% { transform: translateY(-20px) rotate(180deg); } | |
| } | |
| /* Analytics Dashboard - Enhanced Styling */ | |
| .analytics-page { | |
| min-height: 100vh; | |
| background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #334155 100%); | |
| color: #ffffff; | |
| padding: 0; | |
| position: relative; | |
| overflow-x: hidden; | |
| } | |
| /* Floating Elements */ | |
| .floating-element { | |
| position: fixed; | |
| z-index: 1; | |
| pointer-events: none; | |
| opacity: 0.6; | |
| filter: blur(1px); | |
| } | |
| .floating-element-1 { | |
| top: 20%; | |
| right: 5%; | |
| animation: float-slow 8s ease-in-out infinite; | |
| } | |
| .floating-element-2 { | |
| bottom: 30%; | |
| left: 5%; | |
| animation: float-medium 6s ease-in-out infinite; | |
| } | |
| .floating-element-3 { | |
| top: 60%; | |
| right: 20%; | |
| animation: float-fast 10s ease-in-out infinite; | |
| } | |
| @keyframes float-slow { | |
| 0%, 100% { transform: translateY(0px) rotate(0deg); } | |
| 33% { transform: translateY(-15px) rotate(2deg); } | |
| 66% { transform: translateY(10px) rotate(-1deg); } | |
| } | |
| @keyframes float-medium { | |
| 0%, 100% { transform: translateY(0px) rotate(0deg); } | |
| 50% { transform: translateY(-20px) rotate(3deg); } | |
| } | |
| @keyframes float-fast { | |
| 0%, 100% { transform: translateY(0px) rotate(0deg); } | |
| 25% { transform: translateY(-12px) rotate(1deg); } | |
| 75% { transform: translateY(12px) rotate(-2deg); } | |
| } | |
| /* Glass Header */ | |
| .glass-header { | |
| position: relative; | |
| background: rgba(255, 255, 255, 0.1); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| margin: 1rem; | |
| border-radius: 20px; | |
| padding: 2rem; | |
| box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1); | |
| overflow: hidden; | |
| } | |
| .glass-header::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); | |
| animation: shimmer 3s infinite; | |
| z-index: 1; | |
| } | |
| .header-content { | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .header-main h1 { | |
| font-size: 3rem; | |
| font-weight: 800; | |
| color: #ffffff ; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| font-family: 'Inter', sans-serif; | |
| letter-spacing: -0.02em; | |
| } | |
| .header-main p { | |
| font-size: 1.1rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| margin: 0; | |
| font-weight: 400; | |
| line-height: 1.6; | |
| } | |
| .glow-icon { | |
| filter: drop-shadow(0 0 20px rgba(59, 130, 246, 0.7)); | |
| animation: iconGlow 2s ease-in-out infinite; | |
| } | |
| @keyframes iconGlow { | |
| 0%, 100% { filter: drop-shadow(0 0 20px rgba(59, 130, 246, 0.7)); } | |
| 50% { filter: drop-shadow(0 0 30px rgba(59, 130, 246, 1)); } | |
| } | |
| /* Professional Analytics Dashboard */ | |
| .professional-analytics-dashboard { | |
| padding: 1rem; | |
| font-family: 'Inter', sans-serif; | |
| } | |
| /* Executive Summary */ | |
| .executive-summary { | |
| margin-bottom: 2rem; | |
| } | |
| .summary-header { | |
| text-align: center; | |
| margin-bottom: 2rem; | |
| } | |
| .summary-header h2 { | |
| font-size: 2.5rem; | |
| font-weight: 700; | |
| color: #ffffff ; | |
| margin-bottom: 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 1rem; | |
| } | |
| .summary-header p { | |
| font-size: 1.1rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| margin: 0; | |
| } | |
| /* KPI Grid */ | |
| .kpi-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| .kpi-card { | |
| background: rgba(255, 255, 255, 0.12); | |
| backdrop-filter: blur(25px); | |
| border: 1px solid rgba(255, 255, 255, 0.25); | |
| border-radius: 20px; | |
| padding: 2.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 2rem; | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| animation: fadeInUp 0.8s ease-out; | |
| box-shadow: | |
| 0 8px 32px rgba(0, 0, 0, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| } | |
| .kpi-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 5px; | |
| border-radius: 20px 20px 0 0; | |
| background: linear-gradient(90deg, transparent 0%, currentColor 50%, transparent 100%); | |
| animation: shimmer-glow 3s ease-in-out infinite; | |
| } | |
| @keyframes shimmer-glow { | |
| 0%, 100% { opacity: 0.6; } | |
| 50% { opacity: 1; } | |
| } | |
| .kpi-card.primary::before { | |
| background: linear-gradient(90deg, #1e3a8a 0%, #3b82f6 25%, #60a5fa 50%, #3b82f6 75%, #1e3a8a 100%); | |
| } | |
| .kpi-card.warning::before { | |
| background: linear-gradient(90deg, #92400e 0%, #f59e0b 25%, #fbbf24 50%, #f59e0b 75%, #92400e 100%); | |
| } | |
| .kpi-card.success::before { | |
| background: linear-gradient(90deg, #065f46 0%, #10b981 25%, #34d399 50%, #10b981 75%, #065f46 100%); | |
| } | |
| .kpi-card.info::before { | |
| background: linear-gradient(90deg, #0e7490 0%, #06b6d4 25%, #67e8f9 50%, #06b6d4 75%, #0e7490 100%); | |
| } | |
| .kpi-card:hover { | |
| transform: translateY(-12px) scale(1.03); | |
| box-shadow: | |
| 0 25px 50px rgba(0, 0, 0, 0.35), | |
| 0 0 0 1px rgba(255, 255, 255, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| border-color: rgba(255, 255, 255, 0.4); | |
| background: rgba(255, 255, 255, 0.15); | |
| } | |
| .kpi-card:hover .kpi-icon { | |
| transform: rotate(5deg) scale(1.1); | |
| background: rgba(255, 255, 255, 0.2); | |
| box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); | |
| } | |
| .kpi-icon { | |
| width: 72px; | |
| height: 72px; | |
| border-radius: 16px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(255, 255, 255, 0.15); | |
| color: #ffffff; | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| box-shadow: | |
| 0 4px 16px rgba(0, 0, 0, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| backdrop-filter: blur(10px); | |
| } | |
| .kpi-content { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .kpi-value { | |
| font-size: 3rem; | |
| font-weight: 900; | |
| color: #ffffff; | |
| line-height: 0.9; | |
| margin-bottom: 0.5rem; | |
| background: linear-gradient(135deg, #ffffff 0%, rgba(255, 255, 255, 0.8) 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| letter-spacing: -0.02em; | |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
| } | |
| .kpi-label { | |
| font-size: 1rem; | |
| color: rgba(255, 255, 255, 0.9); | |
| font-weight: 600; | |
| margin-bottom: 0.25rem; | |
| letter-spacing: 0.025em; | |
| text-transform: uppercase; | |
| font-size: 0.85rem; | |
| } | |
| .kpi-unit { | |
| font-size: 0.9rem; | |
| color: rgba(255, 255, 255, 0.7); | |
| font-weight: 500; | |
| letter-spacing: 0.01em; | |
| } | |
| .kpi-trend { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| font-size: 0.9rem; | |
| font-weight: 700; | |
| padding: 0.5rem 1rem; | |
| border-radius: 12px; | |
| backdrop-filter: blur(10px); | |
| transition: all 0.3s ease; | |
| letter-spacing: 0.025em; | |
| text-transform: uppercase; | |
| font-size: 0.75rem; | |
| } | |
| .kpi-trend.positive { | |
| background: rgba(16, 185, 129, 0.25); | |
| color: #34d399; | |
| border: 1px solid rgba(16, 185, 129, 0.3); | |
| box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2); | |
| } | |
| .kpi-trend.neutral { | |
| background: rgba(245, 158, 11, 0.25); | |
| color: #fbbf24; | |
| border: 1px solid rgba(245, 158, 11, 0.3); | |
| box-shadow: 0 2px 8px rgba(245, 158, 11, 0.2); | |
| } | |
| .kpi-trend.negative { | |
| background: rgba(239, 68, 68, 0.25); | |
| color: #f87171; | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| box-shadow: 0 2px 8px rgba(239, 68, 68, 0.2); | |
| } | |
| /* Analytics Grid */ | |
| .analytics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| .chart-panel { | |
| background: rgba(255, 255, 255, 0.08); | |
| backdrop-filter: blur(25px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| border-radius: 20px; | |
| padding: 2.5rem; | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
| min-height: 500px; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: | |
| 0 8px 32px rgba(0, 0, 0, 0.15), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .chart-panel::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); | |
| pointer-events: none; | |
| border-radius: 20px; | |
| } | |
| .chart-panel::after { | |
| content: ''; | |
| position: absolute; | |
| top: -2px; | |
| left: -2px; | |
| right: -2px; | |
| bottom: -2px; | |
| background: linear-gradient( | |
| 45deg, | |
| transparent, | |
| rgba(59, 130, 246, 0.3), | |
| transparent, | |
| rgba(139, 92, 246, 0.3), | |
| transparent | |
| ); | |
| border-radius: 22px; | |
| opacity: 0; | |
| animation: rotate-border 4s linear infinite; | |
| z-index: -1; | |
| } | |
| @keyframes rotate-border { | |
| 0% { transform: rotate(0deg); opacity: 0; } | |
| 50% { opacity: 0.6; } | |
| 100% { transform: rotate(360deg); opacity: 0; } | |
| } | |
| .chart-panel.large { | |
| grid-column: span 2; | |
| min-height: 600px; | |
| padding: 3rem; | |
| } | |
| .chart-panel:hover { | |
| transform: translateY(-10px) scale(1.02); | |
| box-shadow: | |
| 0 25px 60px rgba(0, 0, 0, 0.25), | |
| 0 0 0 1px rgba(255, 255, 255, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| border-color: rgba(255, 255, 255, 0.35); | |
| background: rgba(255, 255, 255, 0.12); | |
| } | |
| .chart-panel:hover::after { | |
| opacity: 0.8; | |
| } | |
| .panel-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| margin-bottom: 2rem; | |
| padding-bottom: 1.5rem; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.15); | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .header-content h3 { | |
| font-size: 1.5rem; | |
| font-weight: 800; | |
| color: #ffffff ; | |
| margin: 0 0 0.75rem 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| letter-spacing: -0.025em; | |
| background: linear-gradient(135deg, #ffffff 0%, rgba(255, 255, 255, 0.8) 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .header-content h3 svg { | |
| color: #60a5fa; | |
| filter: drop-shadow(0 2px 4px rgba(96, 165, 250, 0.3)); | |
| } | |
| .header-content p { | |
| font-size: 1rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| margin: 0; | |
| font-weight: 500; | |
| letter-spacing: 0.01em; | |
| line-height: 1.4; | |
| } | |
| .chart-controls { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .control-btn { | |
| padding: 0.5rem 1rem; | |
| border-radius: 8px; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| background: rgba(255, 255, 255, 0.1); | |
| color: rgba(255, 255, 255, 0.7); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .control-btn.active { | |
| background: #3b82f6; | |
| color: #ffffff; | |
| border-color: #3b82f6; | |
| } | |
| /* Enhanced Floating Animation Elements */ | |
| .floating-element { | |
| position: absolute; | |
| pointer-events: none; | |
| z-index: 1; | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.15) 0%, rgba(139, 92, 246, 0.1) 100%); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .floating-element.element-1 { | |
| width: 120px; | |
| height: 120px; | |
| border-radius: 50%; | |
| top: 10%; | |
| left: 5%; | |
| animation: float-complex-1 20s ease-in-out infinite; | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.2) 0%, rgba(16, 185, 129, 0.15) 100%); | |
| box-shadow: 0 8px 32px rgba(59, 130, 246, 0.3); | |
| } | |
| .floating-element.element-2 { | |
| width: 80px; | |
| height: 80px; | |
| border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; | |
| top: 60%; | |
| right: 8%; | |
| animation: float-complex-2 25s ease-in-out infinite; | |
| background: linear-gradient(135deg, rgba(139, 92, 246, 0.2) 0%, rgba(245, 158, 11, 0.15) 100%); | |
| box-shadow: 0 8px 32px rgba(139, 92, 246, 0.3); | |
| } | |
| .floating-element.element-3 { | |
| width: 100px; | |
| height: 100px; | |
| border-radius: 20px; | |
| bottom: 15%; | |
| left: 50%; | |
| animation: float-complex-3 18s ease-in-out infinite; | |
| background: linear-gradient(135deg, rgba(16, 185, 129, 0.2) 0%, rgba(59, 130, 246, 0.15) 100%); | |
| box-shadow: 0 8px 32px rgba(16, 185, 129, 0.3); | |
| transform: rotate(45deg); | |
| } | |
| .floating-element.element-4 { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 50%; | |
| top: 30%; | |
| right: 25%; | |
| animation: float-complex-4 22s ease-in-out infinite; | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.25) 0%, rgba(239, 68, 68, 0.15) 100%); | |
| box-shadow: 0 8px 32px rgba(245, 158, 11, 0.3); | |
| } | |
| @keyframes float-complex-1 { | |
| 0%, 100% { | |
| transform: translateX(0px) translateY(0px) rotate(0deg) scale(1); | |
| border-radius: 50%; | |
| } | |
| 25% { | |
| transform: translateX(50px) translateY(-30px) rotate(90deg) scale(1.1); | |
| border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; | |
| } | |
| 50% { | |
| transform: translateX(100px) translateY(20px) rotate(180deg) scale(0.9); | |
| border-radius: 20px; | |
| } | |
| 75% { | |
| transform: translateX(30px) translateY(50px) rotate(270deg) scale(1.05); | |
| border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; | |
| } | |
| } | |
| @keyframes float-complex-2 { | |
| 0%, 100% { | |
| transform: translateX(0px) translateY(0px) rotate(0deg) scale(1); | |
| border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; | |
| } | |
| 20% { | |
| transform: translateX(-40px) translateY(30px) rotate(72deg) scale(1.15); | |
| border-radius: 50%; | |
| } | |
| 40% { | |
| transform: translateX(-80px) translateY(-20px) rotate(144deg) scale(0.85); | |
| border-radius: 20px; | |
| } | |
| 60% { | |
| transform: translateX(-30px) translateY(-60px) rotate(216deg) scale(1.1); | |
| border-radius: 40% 60% 60% 40% / 40% 40% 60% 60%; | |
| } | |
| 80% { | |
| transform: translateX(20px) translateY(-30px) rotate(288deg) scale(0.95); | |
| border-radius: 50%; | |
| } | |
| } | |
| @keyframes float-complex-3 { | |
| 0%, 100% { | |
| transform: translateX(0px) translateY(0px) rotate(45deg) scale(1); | |
| } | |
| 33% { | |
| transform: translateX(-60px) translateY(-40px) rotate(165deg) scale(1.2); | |
| } | |
| 66% { | |
| transform: translateX(40px) translateY(-80px) rotate(285deg) scale(0.8); | |
| } | |
| } | |
| @keyframes float-complex-4 { | |
| 0%, 100% { | |
| transform: translateX(0px) translateY(0px) rotate(0deg) scale(1); | |
| opacity: 0.8; | |
| } | |
| 25% { | |
| transform: translateX(-30px) translateY(40px) rotate(90deg) scale(1.3); | |
| opacity: 0.6; | |
| } | |
| 50% { | |
| transform: translateX(50px) translateY(80px) rotate(180deg) scale(0.7); | |
| opacity: 1; | |
| } | |
| 75% { | |
| transform: translateX(80px) translateY(20px) rotate(270deg) scale(1.1); | |
| opacity: 0.7; | |
| } | |
| } | |
| /* Enhanced Panel Body */ | |
| .panel-body { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| z-index: 2; | |
| padding: 1rem; | |
| min-height: 300px; | |
| } | |
| /* Stats Container */ | |
| .stats-container { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| width: 100%; | |
| } | |
| .stat-group { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: 12px; | |
| padding: 1.5rem; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .stat-group h4 { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: #ffffff ; | |
| margin: 0 0 1rem 0; | |
| text-align: center; | |
| } | |
| .stat-row { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.75rem 0; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| font-size: 0.9rem; | |
| } | |
| .stat-row:last-child { | |
| border-bottom: none; | |
| } | |
| .stat-label { | |
| color: rgba(255, 255, 255, 0.8); | |
| font-weight: 500; | |
| } | |
| .stat-value { | |
| color: #ffffff; | |
| font-weight: 700; | |
| } | |
| .stat-value.significant { | |
| color: #10b981; | |
| } | |
| .stat-value.decision-reject { | |
| color: #ef4444; | |
| } | |
| /* Chart Error */ | |
| .chart-error { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 2rem; | |
| color: rgba(255, 255, 255, 0.6); | |
| font-size: 0.9rem; | |
| text-align: center; | |
| background: rgba(239, 68, 68, 0.1); | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| border-radius: 8px; | |
| } | |
| /* Loading State */ | |
| .loading-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 4rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| } | |
| .pulse-loader { | |
| width: 40px; | |
| height: 40px; | |
| background: #3b82f6; | |
| border-radius: 50%; | |
| animation: pulse 1.5s ease-in-out infinite; | |
| margin-bottom: 1rem; | |
| } | |
| @keyframes pulse { | |
| 0% { transform: scale(0); opacity: 1; } | |
| 100% { transform: scale(1); opacity: 0; } | |
| } | |
| /* No Data State */ | |
| .no-data-state { | |
| text-align: center; | |
| padding: 4rem 2rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| } | |
| .no-data-state h3 { | |
| color: #ffffff ; | |
| margin-bottom: 1rem; | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| } | |
| .no-data-state p { | |
| color: rgba(255, 255, 255, 0.6); | |
| margin-bottom: 2rem; | |
| line-height: 1.6; | |
| } | |
| /* Enhanced Typography */ | |
| .analytics-page * { | |
| font-family: 'Inter', system-ui, -apple-system, sans-serif; | |
| } | |
| .analytics-page h1, | |
| .analytics-page h2, | |
| .analytics-page h3, | |
| .analytics-page h4, | |
| .analytics-page h5, | |
| .analytics-page h6 { | |
| color: #ffffff ; | |
| font-weight: 700; | |
| letter-spacing: -0.025em; | |
| } | |
| .analytics-page p, | |
| .analytics-page span, | |
| .analytics-page div { | |
| color: rgba(255, 255, 255, 0.9); | |
| } | |
| /* Glass Panel */ | |
| .glass-panel { | |
| background: rgba(255, 255, 255, 0.05); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 20px; | |
| padding: 2rem; | |
| margin: 1rem; | |
| box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); | |
| } | |
| /* Confidence Intervals Visualization */ | |
| .ci-visualization { | |
| margin: 1rem 0; | |
| } | |
| .ci-bar { | |
| height: 20px; | |
| background: rgba(255, 255, 255, 0.1); | |
| border-radius: 10px; | |
| position: relative; | |
| margin-bottom: 0.5rem; | |
| } | |
| .ci-range { | |
| position: absolute; | |
| height: 100%; | |
| background: linear-gradient(90deg, #3b82f6, #1e40af); | |
| border-radius: 10px; | |
| } | |
| .ci-point { | |
| position: absolute; | |
| width: 4px; | |
| height: 100%; | |
| background: #ffffff; | |
| border-radius: 2px; | |
| transform: translateX(-50%); | |
| } | |
| .ci-labels { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 0.8rem; | |
| color: rgba(255, 255, 255, 0.8); | |
| font-weight: 600; | |
| } | |
| /* ANOVA Table */ | |
| .anova-table { | |
| width: 100%; | |
| } | |
| .anova-row { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr 1fr 1fr; | |
| gap: 1rem; | |
| padding: 0.75rem 0; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| font-size: 0.9rem; | |
| } | |
| .anova-row.header { | |
| font-weight: 700; | |
| color: #ffffff; | |
| border-bottom: 2px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .anova-row span { | |
| color: rgba(255, 255, 255, 0.9); | |
| } | |
| .anova-row .significant { | |
| color: #10b981; | |
| font-weight: 700; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 1200px) { | |
| .chart-panel.large { | |
| grid-column: span 1; | |
| } | |
| .analytics-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .kpi-grid { | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .header-main h1 { | |
| font-size: 2rem; | |
| } | |
| .summary-header h2 { | |
| font-size: 1.8rem; | |
| } | |
| .kpi-card { | |
| padding: 1.5rem; | |
| } | |
| .kpi-value { | |
| font-size: 2rem; | |
| } | |
| .chart-panel { | |
| padding: 1rem; | |
| min-height: 300px; | |
| } | |
| .panel-header { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 1rem; | |
| } | |
| } | |
| /* Perfect spacing adjustments */ | |
| .analytics-page .content-area { | |
| padding: 1rem; | |
| } | |
| .analytics-grid { | |
| gap: 1rem; | |
| } | |
| .chart-panel { | |
| margin-bottom: 0; | |
| } | |
| .kpi-grid { | |
| gap: 1rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| /* ============================================ */ | |
| /* ENHANCED ANT DESIGN CHARTS */ | |
| /* ============================================ */ | |
| /* Ant Design Card Enhancement */ | |
| .ant-card { | |
| background: linear-gradient(135deg, rgba(17, 24, 39, 0.95) 0%, rgba(31, 41, 55, 0.90) 100%) ; | |
| border: 1px solid rgba(59, 130, 246, 0.2) ; | |
| border-radius: 20px ; | |
| backdrop-filter: blur(20px) ; | |
| box-shadow: | |
| 0 20px 25px -5px rgba(0, 0, 0, 0.3), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.2), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1) ; | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) ; | |
| position: relative; | |
| overflow: hidden; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; | |
| } | |
| .ant-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.1), transparent); | |
| transition: left 0.8s ease-in-out; | |
| z-index: 1; | |
| } | |
| .ant-card:hover::before { | |
| left: 100%; | |
| } | |
| .ant-card:hover { | |
| transform: translateY(-8px) scale(1.02) ; | |
| border-color: rgba(59, 130, 246, 0.4) ; | |
| box-shadow: | |
| 0 32px 64px -12px rgba(59, 130, 246, 0.25), | |
| 0 20px 25px -5px rgba(0, 0, 0, 0.4), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2) ; | |
| } | |
| .ant-card-head { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%) ; | |
| border-bottom: 1px solid rgba(59, 130, 246, 0.2) ; | |
| border-radius: 20px 20px 0 0 ; | |
| position: relative; | |
| z-index: 2; | |
| padding: 1rem 1.5rem ; | |
| } | |
| .ant-card-head-title { | |
| color: #e5e7eb ; | |
| font-size: 1.25rem ; | |
| font-weight: 700 ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); | |
| background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 50%, #10b981 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| position: relative; | |
| z-index: 2; | |
| margin: 0 ; | |
| } | |
| .ant-card-body { | |
| background: transparent ; | |
| padding: 1.5rem ; | |
| position: relative; | |
| z-index: 2; | |
| } | |
| /* Professional Chart Text Styling */ | |
| .ant-card text { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| font-weight: 500 ; | |
| fill: #e5e7eb ; | |
| } | |
| .ant-card .ant-typography { | |
| color: #e5e7eb ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| } | |
| /* Enhanced Chart Legends */ | |
| .ant-card .recharts-legend-wrapper { | |
| color: #e5e7eb ; | |
| } | |
| .ant-card .recharts-legend-item-text { | |
| color: #e5e7eb ; | |
| font-weight: 600 ; | |
| font-size: 0.875rem ; | |
| } | |
| /* Chart Axis Styling */ | |
| .ant-card .recharts-cartesian-axis-tick text { | |
| fill: #9ca3af ; | |
| font-size: 0.75rem ; | |
| font-weight: 500 ; | |
| } | |
| .ant-card .recharts-cartesian-axis-line { | |
| stroke: rgba(59, 130, 246, 0.3) ; | |
| stroke-width: 2; | |
| } | |
| .ant-card .recharts-cartesian-grid-horizontal line, | |
| .ant-card .recharts-cartesian-grid-vertical line { | |
| stroke: rgba(59, 130, 246, 0.1) ; | |
| stroke-width: 1; | |
| } | |
| /* Chart Loading Animation */ | |
| .chart-loading { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| height: 300px; | |
| position: relative; | |
| } | |
| .chart-loading::before { | |
| content: ''; | |
| width: 50px; | |
| height: 50px; | |
| border: 3px solid rgba(59, 130, 246, 0.3); | |
| border-top: 3px solid #3b82f6; | |
| border-radius: 50%; | |
| animation: professional-spin 1s linear infinite; | |
| } | |
| @keyframes professional-spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| /* Enhanced Typography for Charts */ | |
| .chart-title { | |
| font-size: 1.125rem ; | |
| font-weight: 700 ; | |
| color: #e5e7eb ; | |
| margin-bottom: 0.75rem ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| text-align: center; | |
| background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .chart-subtitle { | |
| font-size: 0.875rem ; | |
| font-weight: 500 ; | |
| color: #9ca3af ; | |
| margin-bottom: 1rem ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| text-align: center; | |
| } | |
| /* Chart Value Labels */ | |
| .chart-value-label { | |
| font-size: 0.75rem ; | |
| font-weight: 600 ; | |
| fill: #e5e7eb ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| } | |
| /* Enhanced Statistical Tables */ | |
| .ant-table { | |
| background: linear-gradient(135deg, rgba(17, 24, 39, 0.95) 0%, rgba(31, 41, 55, 0.90) 100%) ; | |
| border-radius: 16px ; | |
| overflow: hidden; | |
| backdrop-filter: blur(20px); | |
| border: 1px solid rgba(59, 130, 246, 0.2); | |
| } | |
| .ant-table-thead > tr > th { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%) ; | |
| color: #e5e7eb ; | |
| font-weight: 700 ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| border-bottom: 1px solid rgba(59, 130, 246, 0.2) ; | |
| padding: 1rem ; | |
| } | |
| .ant-table-tbody > tr > td { | |
| background: transparent ; | |
| color: #d1d5db ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| border-bottom: 1px solid rgba(59, 130, 246, 0.1) ; | |
| padding: 0.75rem 1rem ; | |
| } | |
| .ant-table-tbody > tr:hover > td { | |
| background: rgba(59, 130, 246, 0.05) ; | |
| } | |
| /* Enhanced Input Controls */ | |
| .ant-input { | |
| background: rgba(17, 24, 39, 0.8) ; | |
| border: 1px solid rgba(59, 130, 246, 0.3) ; | |
| border-radius: 12px ; | |
| color: #e5e7eb ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| padding: 0.75rem 1rem ; | |
| transition: all 0.3s ease ; | |
| } | |
| .ant-input:focus { | |
| border-color: rgba(59, 130, 246, 0.6) ; | |
| box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) ; | |
| } | |
| .ant-select-selector { | |
| background: rgba(17, 24, 39, 0.8) ; | |
| border: 1px solid rgba(59, 130, 246, 0.3) ; | |
| border-radius: 12px ; | |
| color: #e5e7eb ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| } | |
| .ant-select-focused .ant-select-selector { | |
| border-color: rgba(59, 130, 246, 0.6) ; | |
| box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) ; | |
| } | |
| /* Enhanced Buttons */ | |
| .ant-btn-primary { | |
| background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%) ; | |
| border: none ; | |
| border-radius: 12px ; | |
| font-weight: 600 ; | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| padding: 0.75rem 1.5rem ; | |
| height: auto ; | |
| transition: all 0.3s ease ; | |
| } | |
| .ant-btn-primary:hover { | |
| transform: translateY(-2px) ; | |
| box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3) ; | |
| background: linear-gradient(135deg, #2563eb 0%, #7c3aed 100%) ; | |
| } |