
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    :root {
        --primary: #2563eb;
        --primary-dark: #1d4ed8;
        --secondary: #f8fafc;
        --accent: #10b981;
        --text: #1e293b;
        --text-light: #64748b;
        --border: #e2e8f0;
        --glass: rgba(255, 255, 255, 0.1);
        --shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
        --error: #dc3545;
    }
    body {
        font-family: 'Inter', sans-serif;
        /* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); */
        min-height: 100vh;
        color: var(--text);
        overflow-x: hidden;
    }
    /* Animation reservez votre rendez-vous */
    .hero {
        min-height: 100vh;
        display: flex;
        align-items: center;
        position: relative;
        padding: 120px 0 60px;
        overflow: hidden;
        background: url('../images/kapot-open.webp') center/cover no-repeat, linear-gradient(135deg, #3C91E6, #071F36);
    }
    .hero-content {
        position: relative;
        z-index: 2;
        text-align: center;
        color: white;
    }
    .hero h1 {
        font-size: clamp(2.5rem, 5vw, 4rem);
        font-weight: 700;
        margin-bottom: 1.5rem;
        line-height: 1.2;
        animation: fadeInUp 1s ease;
    }
    .hero p {
        font-size: 1.25rem;
        margin-bottom: 2rem;
        opacity: 0.9;
        animation: fadeInUp 1s ease 0.2s both;
    }
    .cta-button {
        background: linear-gradient(45deg, var(--primary), var(--primary-dark));
        color: white;
        border: none;
        padding: 15px 40px;
        border-radius: 50px;
        font-weight: 600;
        font-size: 1.1rem;
        transition: all 0.4s ease;
        animation: fadeInUp 1s ease 0.4s both;
        position: relative;
        overflow: hidden;
    }
    .cta-button::before {
        content: '';
        position: absolute;
        top: 0;
        left: -100%;
        width: 100%;
        height: 100%;
        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
        transition: left 0.6s ease;
    }
    .cta-button:hover {
        transform: translateY(-3px);
        box-shadow: 0 15px 35px rgba(37, 99, 235, 0.4);
    }
    .cta-button:hover::before {
        left: 100%;
    }
    .floating-card {
        position: absolute;
        background: rgba(255, 255, 255, 0.1);
        backdrop-filter: blur(20px);
        border-radius: 20px;
        padding: 20px;
        animation: float 6s ease-in-out infinite;
        border: 1px solid rgba(255, 255, 255, 0.2);
    }
    .floating-card:nth-child(1) {
        top: 20%;
        left: 10%;
        animation-delay: 0s;
    }
    .floating-card:nth-child(2) {
        top: 40%;
        right: 10%;
        animation-delay: 2s;
    }
    .floating-card:nth-child(3) {
        bottom: 20%;
        left: 5%;
        animation-delay: 4s;
    }
    .reservation {
        background: var(--secondary);
        padding: 80px 0;
        position: relative;
    }
    .form-container {
        max-width: 600px;
        margin: 0 auto;
        background: white;
        border-radius: 24px;
        padding: 40px;
        box-shadow: var(--shadow);
        position: relative;
        overflow: hidden;
    }
    .form-container::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 4px;
        background: linear-gradient(90deg, var(--primary), var(--accent));
    }
    .form-group {
        margin-bottom: 24px;
        position: relative;
    }
    .form-label {
        font-weight: 500;
        color: var(--text);
        margin-bottom: 8px;
        display: block;
    }
    .form-control {
        width: 100%;
        padding: 16px 20px;
        border: 2px solid var(--border);
        border-radius: 12px;
        font-size: 1rem;
        transition: all 0.3s ease;
        background: white;
    }
    .form-control:focus {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
        outline: none;
    }
    .form-control.is-invalid {
        border-color: var(--error);
    }
    .invalid-feedback {
        color: var(--error);
        font-size: 0.875rem;
        margin-top: 0.25rem;
        display: none;
    }
    .form-control.is-invalid~.invalid-feedback {
        display: block;
    }
    .submit-btn {
        width: 100%;
        padding: 16px;
        background: linear-gradient(45deg, var(--primary), var(--primary-dark));
        color: white;
        border: none;
        border-radius: 12px;
        font-weight: 600;
        font-size: 1.1rem;
        cursor: pointer;
        transition: all 0.3s ease;
        position: relative;
        overflow: hidden;
    }
    .submit-btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 30px rgba(37, 99, 235, 0.3);
    }
    .submit-btn:disabled {
        opacity: 0.6;
        cursor: not-allowed;
    }
    .services {
        padding: 80px 0;
        background: white;
    }
    .service-card {
        background: white;
        border-radius: 20px;
        padding: 30px;
        text-align: center;
        transition: all 0.4s ease;
        border: 1px solid var(--border);
        cursor: pointer;
        position: relative;
        overflow: hidden;
    }
    .reservation-section {
        padding: 60px 0;
        background: url('https://avatars.mds.yandex.net/get-altay/14306621/2a00000193aafb3f37833b636482c179975c/XXL_height') center/cover fixed;
        position: relative;
    }
    .reservation-section::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(255, 255, 255, 0.9);
    }
    .reservation-section .container {
        position: relative;
        z-index: 1;
    }
    .service-card::before {
        content: '';
        position: absolute;
        top: 0;
        left: -100%;
        width: 100%;
        height: 100%;
        background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.05), transparent);
        transition: left 0.6s ease;
    }
    .service-card:hover {
        transform: translateY(-10px);
        box-shadow: var(--shadow);
    }
    .service-card:hover::before {
        left: 100%;
    }
    .service-icon {
        width: 80px;
        height: 80px;
        margin: 0 auto 20px;
        background: linear-gradient(45deg, var(--primary), var(--accent));
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 2rem;
        color: white;
        transition: all 0.3s ease;
    }
    .service-card:hover .service-icon {
        transform: scale(1.1) rotate(360deg);
    }
    .footer {
        background: var(--text);
        color: white;
        padding: 60px 0 30px;
    }
    .footer a {
        color: rgba(255, 255, 255, 0.7);
        transition: color 0.3s ease;
    }
    .footer a:hover {
        color: var(--primary);
    }
    .whatsapp-btn {
        position: fixed;
        bottom: 30px;
        right: 30px;
        background: #25D366;
        color: white;
        width: 60px;
        height: 60px;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 1.5rem;
        text-decoration: none;
        box-shadow: 0 10px 30px rgba(37, 211, 102, 0.3);
        z-index: 1000;
        transition: all 0.3s ease;
        animation: pulse 2s infinite;
    }
    .whatsapp-btn:hover {
        transform: scale(1.1);
        color: white;
    }
    @keyframes fadeInUp {
        from {
            opacity: 0;
            transform: translateY(50px);
        }
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }
    @keyframes float {
        0%,
        100% {
            transform: translateY(0);
        }
        50% {
            transform: translateY(-20px);
        }
    }
    @keyframes pulse {
        0% {
            box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.7);
        }
        70% {
            box-shadow: 0 0 0 10px rgba(37, 211, 102, 0);
        }
        100% {
            box-shadow: 0 0 0 0 rgba(37, 211, 102, 0);
        }
    }
    @media (max-width: 768px) {
        .hero {
            padding: 100px 0 40px;
        }
        .form-container {
            margin: 20px;
            padding: 30px 20px;
        }
        .floating-card {
            display: none;
        }
        .whatsapp-btn {
            bottom: 20px;
            right: 20px;
            width: 50px;
            height: 50px;
        }
    }
    .loading {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.5);
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 9999;
    }
    .spinner {
        width: 40px;
        height: 40px;
        border: 4px solid rgba(255, 255, 255, 0.3);
        border-top: 4px solid white;
        border-radius: 50%;
        animation: spin 1s linear infinite;
    }
    :root {
        --speed: 3.8s;
        /* durée d'écriture/effacement */
        --delay: .5s;
        /* petite pause avant de démarrer */
    }
    .typewriter {
        display: inline-block;
        white-space: nowrap;
        overflow: hidden;
        border-right: 2px solid #00f0ff;
        font: 700 2rem/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Courier New", monospace;
        /* sera renseigné en JS (nombre de caractères) */
        --chars: 35;
        /* valeur de secours */
        width: 0;
        /* fallback si JS indisponible (36 pas) */
        animation:
            typing var(--speed) steps(36, end) var(--delay) infinite alternate both,
            blink-caret .8s step-end infinite;
    }
    @media (max-width: 600px) {
        .typewriter {
            font-size: 1rem;
        }
    }
    /* écriture/effacement */
    @keyframes typing {
        from {
            width: 0;
        }
        to {
            width: calc(var(--chars) * 1ch);
        }
    }
    /* curseur qui clignote */
    @keyframes blink-caret {
        0%,
        100% {
            border-color: transparent;
        }
        50% {
            border-color: #00f0ff;
        }
    }
    /* Optionnel : un petit “marge” visuelle à la fin pour que le curseur ne coupe pas la dernière lettre */
    .typewriter::after {
        content: " ";
    }
    @keyframes spin {
        0% {
            transform: rotate(0deg);
        }
        100% {
            transform: rotate(360deg);
        }
    }
    /* Restored old design with enhancements */
    .hero {
        min-height: 100vh;
        display: flex;
        align-items: center;
        position: relative;
        padding: 120px 0 60px;
        overflow: hidden;
        background: url('./images/kapot-open.webp') center/cover no-repeat, linear-gradient(135deg, #3C91E6, #071F36);
    }
    .floating-card {
        position: absolute;
        background: rgba(255, 255, 255, 0.1);
        backdrop-filter: blur(10px);
        border: 1px solid rgba(255, 255, 255, 0.2);
        border-radius: 20px;
        padding: 20px;
        animation: float 6s ease-in-out infinite;
    }
    .floating-card:nth-child(1) {
        top: 20%;
        left: 10%;
        animation-delay: 0s;
    }
    .floating-card:nth-child(2) {
        top: 60%;
        right: 10%;
        animation-delay: 2s;
    }
    .floating-card:nth-child(3) {
        bottom: 20%;
        left: 20%;
        animation-delay: 4s;
    }
    @keyframes float {
        0%,
        100% {
            transform: translateY(0px);
        }
        50% {
            transform: translateY(-20px);
        }
    }
    .wave-container {
        position: relative;
        display: inline-block;
        overflow: hidden;
    }
    .wave-container h2 {
        font-size: clamp(28px, 6vw, 60px);
        margin: 0;
        font-family: 'Poppins', 'Segoe UI', sans-serif;
        font-weight: 700;
        letter-spacing: 1px;
        white-space: nowrap;
    }
    .outline-text {
        color: transparent;
        -webkit-text-stroke: 1px #1590c9ff;
    }
    .wave-text {
        position: absolute;
        top: 0;
        left: 0;
        color: #05a8f3;
        -webkit-text-stroke: 1px #05a8f3;
        animation: waveEffect 4s ease-in-out infinite;
    }
    @keyframes waveEffect {
        0%,
        100% {
            clip-path: polygon(0% 45%, 16% 44%, 33% 50%, 54% 60%, 70% 61%, 84% 59%, 100% 52%, 100% 100%, 0% 100%);
        }
        50% {
            clip-path: polygon(0% 60%, 15% 65%, 34% 66%, 51% 62%, 67% 50%, 84% 45%, 100% 46%, 100% 100%, 0% 100%);
        }
    }
    .reservation-section {
        padding: 80px 0;
        background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
    }
    .form-container {
        background: white;
        border-radius: 20px;
        padding: 40px;
        box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
        max-width: 800px;
        margin: 0 auto;
    }
    .service-card {
        background: white;
        border-radius: 15px;
        padding: 30px;
        text-align: center;
        transition: all 0.3s ease;
        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
    }
    .service-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
    }
    .service-icon {
        width: 80px;
        height: 80px;
        background: linear-gradient(135deg, #3C91E6, #071F36);
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 0 auto 20px;
        color: white;
        font-size: 2rem;
    }
    .cta-button,
    .submit-btn {
        background: linear-gradient(135deg, #3C91E6, #071F36);
        border: none;
        padding: 15px 30px;
        border-radius: 50px;
        color: white;
        font-weight: 600;
        transition: all 0.3s ease;
    }
    .cta-button:hover,
    .submit-btn:hover:not(:disabled) {
        transform: translateY(-2px);
        box-shadow: 0 10px 20px rgba(60, 145, 230, 0.3);
    }
    .submit-btn:disabled {
        opacity: 0.6;
        cursor: not-allowed;
        background: #6c757d !important;
    }
    .whatsapp-btn {
        position: fixed;
        bottom: 20px;
        right: 20px;
        background: #25D366;
        color: white;
        width: 60px;
        height: 60px;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 1.5rem;
        box-shadow: 0 4px 12px rgba(37, 211, 102, 0.4);
        z-index: 1000;
        transition: all 0.3s ease;
    }
    .whatsapp-btn:hover {
        transform: scale(1.1);
    }
    @media (max-width: 600px) {
        .wave-container h2 {
            font-size: 23px;
        }
        .info-text {
            font-size: 12px;
        }
        .form-container {
            padding: 20px;
            margin: 0 10px;
        }
    }
    /* Spinner for selects */
    .select-loading {
        position: relative;
    }
    .select-loading::after {
        content: '';
        position: absolute;
        right: 12px;
        top: 50%;
        transform: translateY(-50%);
        width: 16px;
        height: 16px;
        border: 2px solid #f3f3f3;
        border-top: 2px solid #3498db;
        border-radius: 50%;
        animation: spin 1s linear infinite;
        pointer-events: none;
    }
    @keyframes spin {
        0% {
            transform: translateY(-50%) rotate(0deg);
        }
        100% {
            transform: translateY(-50%) rotate(360deg);
        }
    }
    /* Elegant modern loading system */
    #loadingSpinner {
        background: rgba(0, 0, 0, 0.8);
        backdrop-filter: blur(10px);
    }
    .elegant-loader {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 20px;
        color: white;
    }
    .pulse-ring {
        width: 80px;
        height: 80px;
        border: 4px solid rgba(60, 145, 230, 0.3);
        border-radius: 50%;
        position: relative;
        animation: pulse 2s infinite;
    }
    .pulse-ring::after {
        content: '';
        position: absolute;
        top: -4px;
        left: -4px;
        width: 100%;
        height: 100%;
        border: 4px solid transparent;
        border-top: 4px solid #3C91E6;
        border-radius: 50%;
        animation: spin 1s linear infinite;
    }
    @keyframes pulse {
        0% {
            transform: scale(0.95);
            opacity: 1;
        }
        100% {
            transform: scale(1.1);
            opacity: 0;
        }
    }
    .dots {
        display: flex;
        gap: 8px;
    }
    .dot {
        width: 12px;
        height: 12px;
        background: #3C91E6;
        border-radius: 50%;
        animation: bounce 1.4s ease-in-out infinite both;
    }
    .dot:nth-child(1) {
        animation-delay: -0.32s;
    }
    .dot:nth-child(2) {
        animation-delay: -0.16s;
    }
    @keyframes bounce {
        0%,
        80%,
        100% {
            transform: scale(0);
        }
        40% {
            transform: scale(1);
        }
    }
    .loading-text {
        font-weight: 500;
        animation: fadeInOut 2s infinite;
    }
    @keyframes fadeInOut {
        0%,
        100% {
            opacity: 0.6;
        }
        50% {
            opacity: 1;
        }
    }
    /* Toast animation */
    .animate-slide-in {
        animation: slideIn 0.3s ease-out;
    }
    @keyframes slideIn {
        from {
            transform: translateX(100%);
            opacity: 0;
        }
        to {
            transform: translateX(0);
            opacity: 1;
        }
    }
    /* Selected day style */
    .selected {
        background: linear-gradient(135deg, #3C91E6, #071F36) !important;
        color: white !important;
        border-color: #3C91E6 !important;
        transform: scale(1.05);
        box-shadow: 0 4px 12px rgba(60, 145, 230, 0.4);
    }
    /* Selected creneau style */
    .selected-creneau {
        background: linear-gradient(135deg, #3C91E6, #071F36) !important;
        color: white !important;
        border-color: #3C91E6 !important;
        transform: scale(1.02);
        box-shadow: 0 4px 12px rgba(60, 145, 230, 0.4);
    }
    /* Responsive calendar adjustments */
    @media (max-width: 768px) {
        .calendar-grid {
            overflow-x: auto;
            padding-bottom: 10px;
        }
        .grid-cols-7 {
            min-width: 100%;
        }
        .p-3 {
            padding: 0.5rem !important;
            font-size: 0.75rem !important;
        }
        #reservationModal .max-w-md {
            max-width: 95vw;
            margin: 0 auto;
        }
        #creneauxList .p-4 {
            padding: 1rem !important;
        }
        .wave-container h2 {
            font-size: 1.5rem !important;
        }
        .form-row {
            flex-direction: column;
        }
    }
    @media (max-width: 480px) {
        .form-container {
            padding: 1rem !important;
        }
        .service-card {
            padding: 1.5rem !important;
        }
        .service-icon {
            width: 60px;
            height: 60px;
            font-size: 1.5rem;
        }
    }
    .center-label {
        font-size: 1rem !important;
        color: #ffff !important;
        line-height: 1.5;
        text-align: justify;
        margin-left: 0.5rem;
    }
    /* Form validation feedback */
    .is-valid {
        border-color: #28a745 !important;
        box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25) !important;
    }
    .is-invalid {
        border-color: #dc3545 !important;
        box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
    }
    /* Sunday disabled style */
    .sunday-disabled {
        background: #f9f9f9 !important;
        color: #9ca3af !important;
        border-color: #d1d5db !important;
        cursor: not-allowed !important;
        opacity: 0.5;
    }
