/* Custom CSS for Markov Economics Application */ /* Global Styles */ body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } /* Navigation */ .navbar-brand { font-weight: 700; font-size: 1.5rem; } /* Cards and Components */ .card { border: none; border-radius: 10px; } .card-header { border-radius: 10px 10px 0 0 !important; font-weight: 600; } .parameter-card { border-left: 4px solid #007bff; transition: all 0.3s ease; } .parameter-card:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0,0,0,0.15) !important; } /* Form Controls */ .form-range { height: 8px; border-radius: 5px; } .form-range::-webkit-slider-thumb { height: 20px; width: 20px; border-radius: 50%; background: #007bff; cursor: pointer; border: 2px solid white; box-shadow: 0 2px 6px rgba(0,0,0,0.2); } .form-range::-moz-range-thumb { height: 20px; width: 20px; border-radius: 50%; background: #007bff; cursor: pointer; border: 2px solid white; box-shadow: 0 2px 6px rgba(0,0,0,0.2); } /* Buttons */ .btn-simulation { border-radius: 25px; font-weight: 600; padding: 10px 20px; transition: all 0.3s ease; } .btn-simulation:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); } /* Charts */ .chart-container { position: relative; height: 350px; width: 100%; } .chart-container canvas { border-radius: 8px; } /* Metrics Cards */ .metrics-card { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; transition: all 0.3s ease; } .metrics-card:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3); } .inequality-warning { background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); border: none; transition: all 0.3s ease; } .inequality-warning:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(240, 147, 251, 0.3); } /* Progress Bar */ .progress-custom { height: 25px; border-radius: 15px; background-color: #e9ecef; overflow: hidden; } .progress-custom .progress-bar { border-radius: 15px; font-weight: 600; font-size: 0.9rem; line-height: 25px; } /* Simulation Status */ .simulation-status { border-radius: 20px; padding: 8px 16px; font-weight: 600; transition: all 0.3s ease; } .status-ready { background-color: #6c757d !important; } .status-running { background: linear-gradient(90deg, #28a745, #20c997) !important; animation: pulse 2s infinite; } .status-complete { background-color: #007bff !important; } .status-error { background-color: #dc3545 !important; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(40, 167, 69, 0); } 100% { box-shadow: 0 0 0 0 rgba(40, 167, 69, 0); } } /* Alerts */ .alert { border: none; border-radius: 10px; } /* Tooltips */ .tooltip { font-size: 0.85rem; } /* Loading Spinner */ .spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Responsive adjustments */ @media (max-width: 768px) { .chart-container { height: 250px; } .parameter-card { margin-bottom: 20px; } .metrics-card .card-body { padding: 1rem; } .btn-simulation { padding: 8px 16px; font-size: 0.9rem; } } @media (max-width: 576px) { .chart-container { height: 200px; } .display-4 { font-size: 2rem; } .card-body { padding: 1rem; } } /* Animation classes */ .fade-in { opacity: 0; animation: fadeIn 0.5s ease-in forwards; } @keyframes fadeIn { to { opacity: 1; } } .slide-up { transform: translateY(20px); opacity: 0; animation: slideUp 0.5s ease-out forwards; } @keyframes slideUp { to { transform: translateY(0); opacity: 1; } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Print styles */ @media print { .navbar, .card-header, .btn, footer { display: none !important; } .card { border: 1px solid #ddd !important; } .chart-container { height: auto !important; } }