/* Flight Delay Prediction System - Premium Glassmorphism with Airport Background */ /* Global Styles */ .main { background: linear-gradient( to right, rgba(255,255,255,0.96), rgba(255,255,255,0.85), rgba(255,255,255,0.3), rgba(255,255,255,0) ), url('https://user7018.na.imgto.link/public/20260408/morning-at-the-airport-gate.avif'); background-size: cover; background-position: center; background-attachment: fixed; min-height: 100vh; color: #1A2B3C; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; padding: 0; margin: 0; max-width: 100%; overflow-x: hidden; } /* Remove default Streamlit padding */ .stApp { padding: 0 !important; } /* Streamlit main content container */ .block-container { padding-top: 1rem !important; padding-bottom: 1rem !important; max-width: 1200px !important; } /* Container */ .container { max-width: 1200px; margin: 0 auto; padding: 0 20px; } /* Section Spacing */ .section-spacing { margin: 60px 0; padding: 0 1rem; } /* Navigation */ .navbar { background: #0B2A4A; padding: 1rem 2rem; border-radius: 0; margin-bottom: 0; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .navbar-brand { font-size: 1.5rem; font-weight: bold; color: white; text-decoration: none; } .nav-menu { display: flex; gap: 2rem; list-style: none; margin: 0; padding: 0; align-items: center; } .nav-menu li { color: white; cursor: pointer; transition: color 0.3s ease; font-weight: 500; } .nav-menu li:hover { color: #2F80ED; } .nav-button { background: #2F80ED; color: white; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; font-weight: 600; text-decoration: none; display: inline-block; } .nav-button:hover { background: #1C6ED5; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(47, 128, 237, 0.3); } /* Hero Section */ .hero-section { padding: 6rem 1rem; margin: 0; position: relative; overflow: hidden; width: 100%; } .hero-title { font-size: 3.5rem; font-weight: bold; color: #1A2B3C; margin-bottom: 1.5rem; line-height: 1.2; } .hero-subtitle { font-size: 1.3rem; color: #4A5D73; margin-bottom: 2.5rem; line-height: 1.6; max-width: 600px; } .hero-buttons { display: flex; gap: 1rem; flex-wrap: wrap; } .btn-primary { background: #2F80ED; color: white; border: none; padding: 12px 24px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; text-decoration: none; display: inline-block; font-size: 1rem; } .btn-primary:hover { background: #1C6ED5; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(47, 128, 237, 0.3); } .btn-secondary { background: rgba(255,255,255,0.9); border: 1px solid #2F80ED; padding: 12px 24px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; text-decoration: none; display: inline-block; font-size: 1rem; color: #2F80ED; } .btn-secondary:hover { background: #2F80ED; color: white; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(47, 128, 237, 0.3); } /* Flight Status Board */ .flight-status-board { background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; padding: 2rem; box-shadow: 0 8px 25px rgba(0,0,0,0.08); } .status-indicator { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; } .status-dot { width: 12px; height: 12px; border-radius: 50%; animation: pulse 2s infinite; } .status-on-time { background: #27AE60; } .status-delayed { background: #E74C3C; } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } /* Base Card */ .card { background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; padding: 20px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); transition: all 0.3s ease; } .card:hover { transform: translateY(-2px); box-shadow: 0 12px 35px rgba(0,0,0,0.12); } /* Feature Cards */ .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 2rem; margin-bottom: 60px; } .feature-card { text-align: center; padding: 2.5rem 2rem; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); transition: all 0.3s ease; } .feature-card:hover { transform: translateY(-4px); box-shadow: 0 12px 35px rgba(0,0,0,0.12); } .feature-icon { width: 80px; height: 80px; background: rgba(47, 128, 237, 0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; font-size: 2rem; color: #2F80ED; transition: all 0.3s ease; } .feature-card:hover .feature-icon { background: #2F80ED; color: white; transform: scale(1.1); } .feature-title { font-size: 1.4rem; font-weight: bold; color: #1A2B3C; margin-bottom: 1rem; } .feature-description { color: #4A5D73; line-height: 1.6; font-size: 1rem; font-weight: 500; } /* Pipeline Section */ .pipeline-section { background: rgba(245, 247, 250, 0.95); padding: 60px 1rem; margin-bottom: 60px; } .pipeline-section h2 { color: #1A2B3C !important; } .pipeline-steps { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 2rem; position: relative; } .pipeline-steps::before { content: ''; position: absolute; top: 40px; left: 10%; right: 10%; height: 2px; background: linear-gradient(to right, #2F80ED, #4F8EF7, #7FB3FF); z-index: 0; } .pipeline-step { flex: 1; min-width: 150px; text-align: center; position: relative; z-index: 1; } .step-number { background: #2F80ED; color: white; width: 80px; height: 80px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; font-weight: bold; font-size: 1.5rem; box-shadow: 0 4px 12px rgba(47, 128, 237, 0.3); transition: all 0.3s ease; } .pipeline-step:hover .step-number { transform: scale(1.1); background: #1C6ED5; } .step-title { font-weight: bold; color: #1A2B3C; margin-bottom: 0.5rem; font-size: 1.1rem; } .step-description { color: #4A5D73; font-size: 0.95rem; line-height: 1.5; font-weight: 500; } /* Dashboard Cards */ .dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 2rem; margin-bottom: 60px; } .dashboard-card { padding: 2rem; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(6px); border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); } .metric-card { text-align: center; padding: 2.5rem; } .metric-value { font-size: 3rem; font-weight: bold; background: linear-gradient(45deg, #2F80ED, #4F8EF7); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 0.5rem; } .metric-label { color: #1A2B3C; font-size: 1.1rem; font-weight: 600; } .metric-change { color: #27AE60; font-size: 0.9rem; margin-top: 0.5rem; } .metric-change.negative { color: #E74C3C; } /* Prediction Form */ .prediction-form { padding: 2.5rem; margin-bottom: 60px; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); } .form-group { margin-bottom: 1.5rem; } .form-label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: #1A2B3C; font-size: 1rem; } .form-input, .form-select { width: 100%; padding: 12px 16px; border: 1px solid #DCE3EA; border-radius: 8px; font-size: 1rem; transition: all 0.3s ease; background: rgba(255, 255, 255, 0.9); } .form-input:focus, .form-select:focus { outline: none; border-color: #2F80ED; box-shadow: 0 0 0 3px rgba(47, 128, 237, 0.1); } /* Prediction Result */ .prediction-result { padding: 2.5rem; text-align: center; margin-bottom: 60px; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); } .result-probability { font-size: 3rem; font-weight: bold; margin-bottom: 1rem; } .result-delayed { color: #E74C3C; } .result-ontime { color: #27AE60; } .result-label { font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem; color: #1A2B3C; } .result-description { color: #4A5D73; line-height: 1.6; font-size: 1rem; } /* Warning Box */ .warning-box { background: rgba(253, 235, 208, 0.9); backdrop-filter: blur(6px); border-left: 4px solid #F39C12; padding: 1rem 1.5rem; border-radius: 8px; margin: 1rem 0; color: #E67E22; } /* Impact Section */ .impact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin-bottom: 60px; } .impact-card { text-align: center; padding: 2.5rem; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.08); transition: all 0.3s ease; } .impact-card:hover { transform: translateY(-4px); box-shadow: 0 12px 35px rgba(0,0,0,0.12); } .impact-number { font-size: 2.5rem; font-weight: bold; color: #2F80ED; margin-bottom: 0.5rem; } .impact-title { font-size: 1.3rem; font-weight: bold; color: #1A2B3C; margin-bottom: 1rem; } .impact-description { color: #4A5D73; line-height: 1.6; font-size: 1rem; font-weight: 500; } /* Footer */ .footer { background: #0B2A4A; color: white; padding: 3rem 2rem; text-align: center; margin-top: 60px; } .footer-content { max-width: 1200px; margin: 0 auto; } .footer-links { display: flex; justify-content: center; gap: 2rem; margin-bottom: 2rem; flex-wrap: wrap; } .footer-links a { color: white; text-decoration: none; transition: color 0.3s ease; font-weight: 500; } .footer-links a:hover { color: #2F80ED; } .footer-copyright { color: #7A8CA5; margin-bottom: 1rem; } /* Chart containers */ .chart-container { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(6px); border-radius: 12px; padding: 1.5rem; box-shadow: 0 8px 25px rgba(0,0,0,0.08); margin-bottom: 2rem; } /* Responsive Design */ @media (max-width: 768px) { .hero-title { font-size: 2.5rem; } .hero-subtitle { font-size: 1.1rem; } .features-grid { grid-template-columns: 1fr; } .pipeline-steps { flex-direction: column; gap: 3rem; } .pipeline-steps::before { display: none; } .dashboard-grid { grid-template-columns: 1fr; } .impact-grid { grid-template-columns: 1fr; } .nav-menu { flex-direction: column; gap: 1rem; } }