/* =====================================================
   OLEMBE STADIUM PARKING BY KENE
   PROFESSIONAL ADMIN DASHBOARD UI
===================================================== */

/* GOOGLE FONT */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');

/* RESET */
*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family:'Poppins', sans-serif;
}

/* BODY */
body{
    background:#f4f7fc;
    color:#1e293b;
    min-height:100vh;
    padding:30px;
    scroll-behavior: smooth;
    font-family:'Poppins', sans-serif !important;
}

/* =====================================================
   ANIMATIONS & TRANSITIONS
===================================================== */

* {
    transition-property: background-color, border-color, color, box-shadow;
    transition-duration: 0.3s;
    transition-timing-function: ease;
}

/* Bootstrap 5 Override */
.form-control,
.form-select {
    padding: 0.875rem 1rem !important;
    border: 2px solid #e2e8f0 !important;
    border-radius: 12px !important;
    background: #f8fafc !important;
    font-size: 15px !important;
    transition: all 0.3s ease !important;
}

.form-control:focus,
.form-select:focus {
    border-color: #667eea !important;
    background: white !important;
    box-shadow: 0 0 0 5px rgba(102, 126, 234, 0.1) !important;
    outline: none !important;
}

.form-label {
    font-size: 14px !important;
    color: #334155 !important;
    margin-bottom: 8px !important;
}

.btn {
    padding: 0.875rem 1.5rem !important;
    border-radius: 12px !important;
    font-weight: 600 !important;
    transition: all 0.3s ease !important;
}

.btn-primary {
    background: linear-gradient(135deg, #667eea, #764ba2) !important;
    border: none !important;
    box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3) !important;
}

.btn-primary:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 15px 35px rgba(102, 126, 234, 0.4) !important;
    background: linear-gradient(135deg, #5568d3, #6b3e95) !important;
}

.btn-primary:active {
    transform: translateY(0) !important;
}

.alert {
    border-radius: 12px !important;
    border: none !important;
    animation: shake 0.4s ease-in-out !important;
}

.alert-danger {
    background: linear-gradient(135deg, #fee2e2, #fecaca) !important;
    color: #991b1b !important;
    border-left: 4px solid #dc2626 !important;
}

.alert-success {
    background: linear-gradient(135deg, #dcfce7, #bbf7d0) !important;
    color: #166534 !important;
    border-left: 4px solid #16a34a !important;
}

.min-vh-100 {
    min-height: 100vh !important;
}

/* =====================================================
   MAIN CONTAINER
===================================================== */

.container{
    max-width:1200px;
    margin:auto;
    background:#ffffff;
    border-radius:24px;
    padding:40px;
    box-shadow:
    0 10px 40px rgba(15,23,42,0.08);
}

/* =====================================================
   TITLES
===================================================== */

h1{
    text-align:center;
    font-size:42px;
    font-weight:700;
    color:#0f172a;
    margin-bottom:10px;
}

h2{
    font-size:30px;
    font-weight:600;
    color:#0f172a;
    margin-bottom:20px;
}

h3{
    text-align:center;
    color:#2563eb;
    font-size:22px;
    margin-bottom:15px;
}

/* =====================================================
   WELCOME SECTION
===================================================== */

.welcome-section{
    background:linear-gradient(
        135deg,
        #2563eb,
        #1d4ed8
    );

    color:white;
    border-radius:20px;
    padding:35px;
    margin-bottom:35px;
    text-align:center;

    box-shadow:
    0 15px 35px rgba(37,99,235,0.25);
    
    animation: fadeInDown 0.8s ease-out;
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.welcome-section h1{
    color:white;
    font-size:38px;
}

.welcome-section p{
    margin-top:12px;
    font-size:17px;
    line-height:1.7;
    opacity:0.95;
}

/* =====================================================
   DATE CARD
===================================================== */

.date-box{
    background:#f8fafc;
    border:1px solid #e2e8f0;
    border-left:6px solid #2563eb;
    padding:20px;
    border-radius:18px;
    margin-bottom:30px;

    display:flex;
    justify-content:space-between;
    align-items:center;
    flex-wrap:wrap;
    gap:15px;
}

.date-box p{
    font-size:16px;
    font-weight:500;
    color:#334155;
}

/* =====================================================
   STATISTICS CARDS
===================================================== */

.stats-box{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    gap:25px;
    margin-bottom:40px;
}

.card{
    background:white;
    border-radius:22px;
    padding:30px;

    border:1px solid #e2e8f0;

    transition:0.4s;

    box-shadow:
    0 10px 25px rgba(15,23,42,0.05);
    
    animation: fadeIn 0.6s ease-out;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.card:hover{
    transform:translateY(-6px);

    box-shadow:
    0 20px 35px rgba(37,99,235,0.15);
}

.card h2{
    font-size:20px;
    color:#64748b;
    margin-bottom:15px;
}

.card p{
    font-size:38px;
    font-weight:700;
    color:#0f172a;
}

/* =====================================================
   MENU BUTTONS
===================================================== */

.menu{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
    gap:20px;
}

.menu a{
    text-decoration:none;

    background:white;

    border:2px solid #e2e8f0;

    color:#0f172a;

    padding:18px;

    border-radius:18px;

    font-size:17px;

    font-weight:600;

    text-align:center;

    transition:0.3s;

    box-shadow:
    0 5px 15px rgba(15,23,42,0.04);
    
    position: relative;
    overflow: hidden;
}

.menu a::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: #2563eb;
    transition: left 0.3s ease;
    z-index: -1;
}

.menu a:hover{
    background:#2563eb;
    color:white;
    border-color:#2563eb;

    transform:translateY(-3px);
}

.menu a:hover::before {
    left: 0;
}

/* =====================================================
   LOGOUT BUTTON
===================================================== */

.logout{
    background:#ef4444 !important;
    color:white !important;
    border:none !important;
}

.logout:hover{
    background:#dc2626 !important;
}

/* =====================================================
   FORMS
===================================================== */

form{
    display:flex;
    flex-direction:column;
    gap:20px;
}

input,
select{
    width:100%;

    padding:16px;

    border-radius:14px;

    border:1px solid #cbd5e1;

    background:#f8fafc;

    font-size:16px;

    transition:0.3s;
}

input:focus,
select:focus{
    border-color:#2563eb;
    outline:none;

    box-shadow:
    0 0 0 4px rgba(37,99,235,0.12);
}

/* =====================================================
   BUTTONS
===================================================== */

button{
    background:#2563eb;
    color:white;

    border:none;

    padding:16px;

    border-radius:14px;

    font-size:17px;

    font-weight:600;

    cursor:pointer;

    transition:0.3s;
}

button:hover{
    background:#1d4ed8;
}

/* =====================================================
   TABLES
===================================================== */

table{
    width:100%;
    border-collapse:collapse;

    margin-top:25px;

    overflow:hidden;

    border-radius:20px;

    background:white;

    box-shadow:
    0 10px 30px rgba(15,23,42,0.05);
}

table thead{
    background:#2563eb;
    color:white;
}

table th{
    padding:18px;
    font-size:16px;
    font-weight:600;
}

table td{
    padding:18px;
    border-bottom:1px solid #e2e8f0;
    text-align:center;
    font-size:15px;
}

table tbody tr:hover{
    background:#f8fbff;
}

/* =====================================================
   REPORT BOX
===================================================== */

.report-box{
    background:white;
    border-radius:20px;

    padding:35px;

    box-shadow:
    0 10px 30px rgba(15,23,42,0.06);

    margin-top:25px;
}

.report-box p{
    font-size:20px;
    font-weight:600;
    margin:15px 0;
}

/* =====================================================
   ALERTS
===================================================== */

.error{
    background:#fee2e2;
    color:#991b1b;

    padding:15px;

    border-radius:14px;

    text-align:center;
}

.success{
    background:#dcfce7;
    color:#166534;

    padding:15px;

    border-radius:14px;

    text-align:center;
}

/* =====================================================
   LOGIN PAGE
===================================================== */

.login-page{
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
    min-height: 100vh !important;
}

.login-wrapper{
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.login-container{
    background: white;
    border-radius: 24px;
    padding: 50px 40px;
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.2);
    width: 100%;
    max-width: 450px;
    animation: slideUp 0.6s ease-out;
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.login-header{
    text-align: center;
    margin-bottom: 40px;
}

.logo-circle{
    width: 80px;
    height: 80px;
    background: linear-gradient(135deg, #667eea, #764ba2);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 48px;
    margin: 0 auto 20px;
    box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3);
    animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
}

.logo-icon {
    display: block;
    line-height: 1;
}

.login-header h1{
    font-size: 32px;
    color: #0f172a;
    margin-bottom: 5px;
}

.login-header .text-muted{
    font-size: 14px !important;
    color: #64748b !important;
    margin: 0;
    font-weight: 400;
}

.login-form{
    margin-bottom: 30px;
}

.login-form input {
    padding: 14px !important;
    border: 2px solid #e2e8f0 !important;
    border-radius: 12px !important;
    background: #f8fafc !important;
    font-size: 15px !important;
    transition: all 0.3s ease !important;
    position: relative !important;
}

.login-form input:focus {
    border-color: #667eea !important;
    background: white !important;
    box-shadow: 0 0 0 5px rgba(102, 126, 234, 0.1) !important;
    outline: none !important;
}

.login-form input::-webkit-outer-spin-button,
.login-form input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Validation Styles */
.login-form input.is-valid {
    border-color: #10b981 !important;
    background-color: #f0fdf4 !important;
}

.login-form input.is-valid:focus {
    border-color: #10b981 !important;
    box-shadow: 0 0 0 5px rgba(16, 185, 129, 0.1) !important;
}

.login-form input.is-invalid {
    border-color: #ef4444 !important;
    background-color: #fef2f2 !important;
}

.login-form input.is-invalid:focus {
    border-color: #ef4444 !important;
    box-shadow: 0 0 0 5px rgba(239, 68, 68, 0.1) !important;
}

/* Messages d'erreur */
.error-message {
    display: none;
    color: #dc2626 !important;
    font-size: 13px !important;
    margin-top: 6px !important;
    padding: 0 4px;
    animation: slideDown 0.3s ease-out;
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.login-form input.is-invalid ~ .error-message {
    display: block !important;
}

/* Icônes de validation */
.login-form input.is-valid::after {
    content: '✓';
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: #10b981;
    font-weight: bold;
}

.login-form input.is-invalid::after {
    content: '✕';
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: #ef4444;
    font-weight: bold;
}

.login-form .btn {
    padding: 14px !important;
    background: linear-gradient(135deg, #667eea, #764ba2) !important;
    color: white !important;
    border: none !important;
    border-radius: 12px !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: all 0.3s ease !important;
    box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3) !important;
    width: 100% !important;
}

.login-form .btn:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 15px 35px rgba(102, 126, 234, 0.4) !important;
}

.login-form .btn:active {
    transform: translateY(0) !important;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-10px); }
    75% { transform: translateX(10px); }
}

.login-footer{
    text-align: center;
    padding-top: 20px;
    border-top: 1px solid #e2e8f0;
}

.login-footer p{
    font-size: 12px;
    color: #94a3b8;
    margin: 0;
}

.login-box{
    max-width:500px;
    margin:80px auto;
    background:white;
    padding:45px;
    border-radius:28px;
    box-shadow:
    0 20px 45px rgba(15,23,42,0.08);
}

.login-box h2{
    text-align:center;
    margin-bottom:30px;
}


/* =====================================================
   FOOTER
===================================================== */

.footer{
    margin-top:40px;
    text-align:center;
    color:#94a3b8;
    font-size:14px;
}

/* =====================================================
   RESPONSIVE
===================================================== */

/* Mobile - Extra small (< 480px) - xs */
@media(max-width:480px){
    body{
        padding:10px;
    }

    .login-page{
        padding: 10px !important;
    }

    .login-container{
        padding: 25px 20px;
        border-radius: 18px;
    }

    .login-header{
        margin-bottom: 25px;
    }

    .logo-circle{
        width: 60px;
        height: 60px;
        font-size: 36px;
        margin-bottom: 15px;
    }

    .login-header h1{
        font-size: 24px;
    }

    .login-header .text-muted{
        font-size: 12px !important;
    }

    .form-group,
    .mb-3 {
        margin-bottom: 16px !important;
    }

    .mb-4 {
        margin-bottom: 20px !important;
    }

    .form-label{
        font-size: 13px !important;
        margin-bottom: 6px !important;
    }

    .form-control {
        padding: 12px !important;
        font-size: 14px !important;
    }

    .btn {
        padding: 12px !important;
        font-size: 15px !important;
    }

    .login-footer{
        padding-top: 15px;
    }

    .login-footer p{
        font-size: 11px;
    }

    .container{
        padding:15px;
        border-radius:16px;
    }

    h1{
        font-size:24px;
    }

    h2{
        font-size:20px;
    }

    .welcome-section h1{
        font-size:22px;
    }

    .welcome-section{
        padding:20px;
        margin-bottom:20px;
    }

    .welcome-section p{
        font-size:14px;
    }

    .card{
        padding:20px;
        border-radius:16px;
    }

    .card p{
        font-size:24px;
    }

    .card h2{
        font-size:16px;
    }

    .date-box{
        padding:15px;
        border-radius:12px;
        flex-direction:column;
        text-align:center;
        gap:10px;
    }

    .menu{
        grid-template-columns:1fr;
        gap:12px;
    }

    .menu a{
        padding:14px;
        font-size:15px;
    }

    .stats-box{
        gap:15px;
        margin-bottom:25px;
    }

    table{
        font-size:12px;
    }

    table th,
    table td{
        padding:10px 5px;
    }

    .login-box{
        margin:40px 10px;
        padding:25px;
        border-radius:20px;
    }
}

/* Tablet - Small (480px to 768px) - sm */
@media(max-width:768px){

    body{
        padding:15px;
    }

    .login-page{
        padding: 15px !important;
    }

    .login-container{
        padding: 35px 30px;
        border-radius: 20px;
    }

    .logo-circle{
        width: 70px;
        height: 70px;
        font-size: 40px;
    }

    .login-header h1{
        font-size: 28px;
    }

    .form-control {
        padding: 13px !important;
        font-size: 15px !important;
    }

    .btn {
        padding: 13px !important;
        font-size: 16px !important;
    }

    .container{
        padding:25px;
    }

    h1{
        font-size:30px;
    }

    h2{
        font-size:24px;
    }

    .welcome-section h1{
        font-size:28px;
    }

    .welcome-section{
        padding:30px;
    }

    .card p{
        font-size:28px;
    }

    .date-box{
        flex-direction:column;
        text-align:center;
    }

    .stats-box{
        grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
        gap:15px;
    }

    .menu{
        grid-template-columns:repeat(2,1fr);
        gap:15px;
    }

    .menu a{
        padding:14px;
        font-size:15px;
    }

    input,
    select{
        padding:14px;
        font-size:14px;
    }

    button{
        padding:14px;
        font-size:15px;
    }

    table{
        font-size:13px;
    }

    table th,
    table td{
        padding:12px;
    }

    .login-box{
        max-width:400px;
        margin:60px auto;
        padding:30px;
    }

    .report-box{
        padding:25px;
    }
}

/* Medium devices (769px to 1024px) - md */
@media(min-width:769px) and (max-width:1024px){
    .container{
        padding:30px;
    }

    .stats-box{
        grid-template-columns:repeat(3,1fr);
        gap:20px;
    }

    .menu{
        grid-template-columns:repeat(3,1fr);
        gap:15px;
    }
}

/* Large devices (1025px+) - lg */
@media(min-width:1025px){
    .container{
        max-width:1200px;
    }

    .stats-box{
        grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    }

    .menu{
        grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
    }
}