/* ============================================================
   SPORTS COMPLEX — PUBLIC STYLES
   ============================================================ */

/* Custom scrollbar */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #f1f5f9; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

/* Smooth scrolling */
html { scroll-behavior: smooth; }

/* Navbar tweaks */
.navbar { box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
.navbar-brand { letter-spacing: -0.5px; }

/* Cards */
.card { transition: all 0.3s ease; border-radius: 14px; }
.card-header { border-bottom: 1px solid #f1f5f9; }

/* Buttons */
.btn { border-radius: 8px; font-weight: 500; transition: all 0.2s; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { box-shadow: 0 2px 8px rgba(37,99,235,0.3); }
.btn-primary:hover { box-shadow: 0 4px 15px rgba(37,99,235,0.4); }

/* Form controls */
.form-control, .form-select { border-radius: 8px; border-color: #e2e8f0; }
.form-control:focus, .form-select:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,0.1); }

/* Alerts */
.alert { border-radius: 10px; border: none; }

/* Tables */
.table { margin-bottom: 0; }
.table th { font-weight: 600; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; color: #64748b; }
.table td { vertical-align: middle; }

/* Badges */
.badge { font-weight: 500; border-radius: 6px; padding: 5px 10px; }

/* Hero section animation */
.hero-section { animation: fadeIn 0.8s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

/* Loading spinner */
.spinner-border { width: 1.5rem; height: 1.5rem; border-width: 0.15em; }

/* Responsive adjustments */
@media (max-width: 768px) {
    .hero-section { padding: 40px 0; }
    .hero-section h1 { font-size: 1.8rem; }
    .stat-card .stat-value { font-size: 1.4rem; }
    .container { padding-left: 15px; padding-right: 15px; }
}

/* Booking slot animations */
.slot-btn { transition: all 0.15s ease; }
.slot-btn:hover:not(.booked):not(.maintenance) { transform: scale(1.05); }
.slot-btn.selected { animation: pulse 0.3s ease; }
@keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }

/* Floor map court styles */
.floor-map .court { transition: all 0.3s ease; }
.floor-map .court:hover { transform: scale(1.05); z-index: 10; }
.floor-map .court.booked { background: #fee2e2; border-color: #fca5a5; }
.floor-map .court.available { background: #dcfce7; border-color: #86efac; }

/* Print styles */
@media print {
    .sidebar, .navbar, .top-bar, footer { display: none !important; }
    .main-content { margin-left: 0 !important; }
}
