:root {
    /* Backgrounds */
    --bg-main: #0f172a;
    --bg-surface: #1e293b;
    /* Buttons & Actions */
    --accent: #22e7a1;
    --accent-hover: #1abd91;
    --delete-magenta: #e722cb;
    --delete-hover: #b51ba0;
    /* Logic for the Details style */
    --btn-info-bg: var(--bg-main);
    --btn-info-text: var(--accent);
    /* Text & Hover colors */
    --text-main: #f1f5f9;
    --text-muted: #94a3b8;
    --text-dark: #0f172a;
    --text-hover-grey: #cbd5e1;
    /* Borders */
    --border: #334155;
    --warning-pink: #e722cb;
    /* Errors and Warnings */
    --accent-error: #c9e723;
    --system-persistent: #23c9e7;
}

/* --- Global Styles --- */
body {
    background-color: var(--bg-main);
    color: var(--text-main);
    font-family: 'Inter', 'Segoe UI', system-ui, sans-serif;
    line-height: 1.6;
    margin-bottom: 60px;
}

/* --- Navigation --- */
.navbar {
    background-color: var(--bg-surface) !important;
    border-bottom: 1px solid var(--border);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

.navbar-brand, .nav-link {
    color: var(--text-main) !important;
    font-weight: 600;
}

    .nav-link.nav-btn {
        border: 1px solid var(--border);
        border-radius: 4px;
        padding: 8px 15px !important;
        transition: all 0.2s;
        color: var(--text-main) !important;
    }

        .nav-link.nav-btn:hover {
            border-color: var(--accent);
            color: var(--accent) !important;
        }

        .nav-link.nav-btn:active {
            background-color: var(--accent);
            color: var(--text-dark) !important;
        }

/* --- Tables --- */
.table, .table td, .table th {
    color: var(--text-main) !important;
    border-color: var(--border);
}

    .table thead {
        background-color: var(--bg-surface);
        border-bottom: 2px solid var(--accent);
    }

.table-striped tbody tr:nth-of-type(odd) {
    background-color: rgba(255, 255, 255, 0.02);
}

.table-bordered {
    border: 1px solid var(--border) !important;
}

/* --- Specialized Buttons --- */

/* Primary (Mint) */
.btn-primary {
    background-color: var(--accent) !important;
    border: none !important;
    color: var(--text-dark) !important;
    font-weight: 700;
}

    .btn-primary:hover {
        background-color: var(--accent-hover) !important;
    }

/* --- Refined Details Button (Ghost style) --- */
.btn-info {
    background-color: var(--btn-info-bg) !important;
    color: var(--btn-info-text) !important;
    border: 1px solid var(--border) !important;
    font-weight: 500;
    transition: all 0.2s ease;
}

    .btn-info:hover {
        background-color: var(--bg-surface) !important;
        color: var(--text-hover-grey) !important;
        border-color: var(--accent) !important;
        box-shadow: 0 0 8px rgba(34, 231, 161, 0.2);
    }

/* --- Delete Button (Magenta) --- */
.btn-danger {
    background-color: var(--delete-magenta) !important;
    border: none !important;
    color: var(--bg-surface) !important;
    font-weight: 600;
}

    /* Animate the Icon inside the button */
    .btn-danger i {
        transition: transform 0.2s;
        display: inline-block; /* Required for transform to work well */
    }

    .btn-danger:hover {
        background-color: var(--delete-hover) !important;
        color: white !important;
    }

        /* When the button is hovered, make the icon pop! */
        .btn-danger:hover i {
            transform: scale(1.3) rotate(-10deg); /* Makes the trash can grow and tilt */
        }

/* --- Alerts --- */
.alert-warning {
    background-color: var(--bg-surface) !important;
    border: 2px solid var(--warning-pink) !important;
    color: var(--text-main) !important;
}

    .alert-warning h4 {
        color: var(--warning-pink) !important;
    }

/* Style all text inputs, selects, and textareas */
.form-control, .form-select {
    background-color: rgba(15, 23, 42, 0.5) !important; /* Slightly transparent bg-main */
    border: 1px solid var(--border) !important;
    color: var(--text-main) !important;
    transition: border-color 0.2s, box-shadow 0.2s;
}

    .form-control:focus, .form-select:focus {
        background-color: var(--bg-main) !important;
        border-color: var(--accent) !important;
        color: var(--text-main) !important;
        box-shadow: 0 0 0 0.25rem rgba(34, 231, 161, 0.25) !important;
        outline: none;
    }

    .form-control::placeholder {
        color: var(--text-muted);
        opacity: 0.7;
    }

/* Custom Mint Spinner */
.spinner-mint {
    color: var(--accent) !important;
}

/* the default for all spinners */
.spinner-border {
    border-width: 0.2em;
    width: 3rem;
    height: 3rem;
}

/* The Modal Container */
.modal-content {
    background-color: var(--bg-surface) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-main) !important;
}

/* Modal Header and Footer Dividers */
.modal-header, .modal-footer {
    border-color: var(--border) !important;
}

/* The close (X) button in the top right */
.btn-close {
    filter: invert(1) grayscale(100%) brightness(200%); /* Makes the black X white */
}

/* A smaller version for inside buttons */
.spinner-btn {
    width: 1.2rem;
    height: 1.2rem;
    vertical-align: middle;
    margin-right: 0.5rem;
    display: none;
}

.card-header, .bg-primary {
    background-color: var(--bg-surface) !important;
    color: var(--accent) !important; /* Mint text on dark surface */
    border-bottom: 1px solid var(--border) !important;
}

.card {
    background-color: var(--bg-surface) !important;
    border: 1px solid var(--border) !important;
}

/* The Register Car Button: Reversing Logic 
   Normal: Grey background, Mint text
   Hover: Mint background, Grey text
*/
.btn-register {
    background-color: var(--bg-main) !important;
    color: var(--accent) !important;
    border: 1px solid var(--accent) !important;
    font-weight: 700;
    transition: all 0.3s ease;
}

    .btn-register:hover {
        background-color: var(--accent) !important;
        color: var(--bg-main) !important;
        box-shadow: 0 0 15px rgba(34, 231, 161, 0.4);
    }

.text-muted {
    color: var(--text-muted) !important; /* Forces it to use #94a3b8 instead of black */
}

.btn-outline-secondary {
    color: var(--text-main) !important;
    border-color: var(--border) !important;
}

    .btn-outline-secondary:hover {
        background-color: var(--bg-surface) !important;
        color: var(--accent) !important;
        border-color: var(--accent) !important;
    }

/* Custom Accent Text Utility */
.text-accent {
    color: var(--accent) !important;
}

/* Style the Leaflet Popups to match cards */
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
    background-color: var(--bg-surface) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border);
    border-radius: 8px;
}

/* Custom Scrollbar for the garage list */
.garage-list-container::-webkit-scrollbar {
    width: 6px;
}

.garage-list-container::-webkit-scrollbar-thumb {
    background: var(--border);
    border-radius: 10px;
}

.garage-list-container::-webkit-scrollbar-thumb:hover {
    background: var(--accent);
}

.car-selection-card:hover .card-body {
    border-color: var(--accent) !important;
    box-shadow: 0 0 15px rgba(34, 231, 161, 0.15);
    transform: translateY(-5px);
}

.car-selection-card:active {
    transform: scale(0.98);
}

.border-dashed:hover {
    border-color: var(--accent) !important;
    color: var(--accent) !important;
}

.border-dashed:hover i, .border-dashed:hover p {
    color: var(--accent) !important;
}

/* Step-Map Container */
.driver-steps {
    display: flex;
    align-items: center;
    gap: 0;
    margin-left: 20px;
    padding: 5px 15px;
    background: rgba(255, 255, 255, 0.03);
    border-radius: 50px;
    border: 1px solid var(--border);
}

    /* Individual Step Circle */
    .driver-steps .step {
        width: 24px;
        height: 24px;
        border-radius: 50%;
        background: var(--bg-main);
        border: 2px solid var(--border);
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 11px;
        font-weight: bold;
        color: var(--text-muted);
        position: relative;
        z-index: 2;
    }

        /* The Connecting Line */
        .driver-steps .step:not(:last-child)::after {
            content: '';
            position: absolute;
            left: 22px;
            top: 50%;
            width: 15px;
            height: 2px;
            background: var(--border);
            z-index: 1;
        }

        /* Active/Done State */
        .driver-steps .step.done {
            border-color: var(--accent);
            color: var(--accent);
            box-shadow: 0 0 8px rgba(34, 231, 161, 0.2);
        }

            .driver-steps .step.done:not(:last-child)::after {
                background: var(--accent);
            }

        /* Tooltip on Hover */
        .driver-steps .step:hover::before {
            content: attr(data-title);
            position: absolute;
            top: 30px;
            font-size: 10px;
            white-space: nowrap;
            background: var(--bg-surface);
            color: var(--accent);
            padding: 2px 8px;
            border-radius: 4px;
            border: 1px solid var(--border);
        }

/* --- Validation & Error Overrides --- */

/* Target the validation spans */
.field-validation-error,
.text-danger,
.validation-summary-errors {
    color: var(--accent-error) !important;
    font-size: 0.85rem;
    font-weight: 500;
}

    /* Style the summary list */
    .validation-summary-errors ul {
        list-style: none;
        padding-left: 0;
        margin-bottom: 0;
    }

/* Remove red borders on invalid inputs and use our Yellow instead */
.input-validation-error {
    border-color: var(--accent-error) !important;
}

/* Persistent System Info (Blue) */
.text-info-system {
    color: var(--system-persistent) !important;
}

/* Overriding the default checkbox/radio accent color */
.form-check-input:checked {
    background-color: var(--accent) !important;
    border-color: var(--accent) !important;
}

/* --- Missing Accent Outline Button --- */
.btn-outline-accent {
    color: var(--accent) !important;
    background-color: transparent !important;
    border: 1px solid var(--accent) !important;
    font-weight: 600;
    transition: all 0.2s ease-in-out;
}

    .btn-outline-accent:hover {
        background-color: var(--accent) !important;
        color: var(--bg-main) !important; /* Mint background, dark text on hover */
        box-shadow: 0 0 12px rgba(34, 231, 161, 0.3);
    }

/* --- Custom Status Badge (Yellow/Lime) --- */
.badge-ready {
    background-color: rgba(201, 231, 35, 0.15) !important; /* 15% opacity of your yellow */
    color: var(--accent-error) !important; /* The solid yellow #c9e723 */
    border: 1px solid rgba(201, 231, 35, 0.3) !important;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}