{"id":16,"date":"2026-06-10T10:06:04","date_gmt":"2026-06-10T10:06:04","guid":{"rendered":"http:\/\/pms99.fr\/?page_id=16"},"modified":"2026-06-10T11:39:32","modified_gmt":"2026-06-10T11:39:32","slug":"16-2","status":"publish","type":"page","link":"https:\/\/pms99.fr\/","title":{"rendered":""},"content":{"rendered":"<div class=\"aligncenter wp-block-site-logo\"><a href=\"https:\/\/pms99.fr\/\" class=\"custom-logo-link\" rel=\"home\"><img loading=\"lazy\" decoding=\"async\" width=\"229\" height=\"54\" src=\"https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit.png\" class=\"custom-logo\" alt=\"\" srcset=\"https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit.png 2171w, https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit-300x71.png 300w, https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit-1024x242.png 1024w, https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit-768x181.png 768w, https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit-1536x363.png 1536w, https:\/\/pms99.fr\/wp-content\/uploads\/2026\/06\/PMS99-reedit-2048x484.png 2048w\" sizes=\"auto, (max-width: 229px) 100vw, 229px\" \/><\/a><\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Embarquez pour la saison 2026<\/title>\n    <link href=\"https:\/\/fonts.cdnfonts.com\/css\/eurostile\" rel=\"stylesheet\">\n    <style>\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n\n        body {\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n            background: #000000;\n            color: #FFFFFF;\n            min-height: 100vh;\n            padding: 20px;\n            padding-bottom: 120px;\n        }\n\n        .container { max-width: 1600px; margin: 0 auto; }\n\n        header {\n            text-align: center;\n            padding: 30px 0;\n            background: #D51D24;\n            border-radius: 15px;\n            margin-bottom: 30px;\n            box-shadow: 0 10px 30px rgba(213, 29, 36, 0.5);\n        }\n\n        h1 {\n            font-size: 2.5em;\n            margin-bottom: 10px;\n            font-weight: 900;\n            letter-spacing: 2px;\n        }\n\n        .subtitle { font-size: 1.2em; opacity: 0.95; font-weight: 700; }\n\n        .info-banner {\n            background: #FFFFFF;\n            color: #000000;\n            padding: 15px;\n            border-radius: 10px;\n            margin-bottom: 20px;\n            text-align: center;\n            font-weight: 700;\n            border: 3px solid #D51D24;\n        }\n\n        .deck-selector {\n            display: flex;\n            justify-content: center;\n            gap: 20px;\n            margin-bottom: 30px;\n            flex-wrap: wrap;\n        }\n\n        .deck-btn {\n            background: #000000;\n            color: #FFFFFF;\n            border: 3px solid #D51D24;\n            padding: 15px 40px;\n            font-size: 1.1em;\n            cursor: pointer;\n            border-radius: 10px;\n            transition: all 0.3s;\n            font-weight: 900;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n        }\n\n        .deck-btn:hover { background: #D51D24; transform: translateY(-2px); }\n        .deck-btn.active { background: #D51D24; }\n\n        .deck { display: none; }\n        .deck.active {\n            display: flex;\n            justify-content: center;\n            gap: 40px;\n            flex-wrap: wrap;\n        }\n\n        .plane-container {\n            background: white;\n            border-radius: 20px;\n            padding: 20px;\n            box-shadow: 0 20px 60px rgba(213, 29, 36, 0.3);\n        }\n\n        .plane-body {\n            background: linear-gradient(to bottom, #e8e8e8 0%, #d0d0d0 100%);\n            border-radius: 100px 100px 30px 30px;\n            padding: 30px 20px;\n            border: 3px solid #000000;\n            min-width: 350px;\n        }\n\n        .plane-nose {\n            background: #000000;\n            height: 80px;\n            border-radius: 100px 100px 0 0;\n            margin: -30px -20px 20px -20px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: white;\n            font-weight: 900;\n        }\n\n        .section { margin-bottom: 25px; }\n\n        .section-title {\n            text-align: center;\n            padding: 12px;\n            border-radius: 10px;\n            margin-bottom: 15px;\n            font-weight: 900;\n            font-size: 1.1em;\n            color: white;\n        }\n\n        .section-title.premiere {\n            background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);\n            color: #000000;\n        }\n        .section-title.business { background: #000000; border: 2px solid #FFFFFF; }\n        .section-title.economy-plus { background: #D51D24; }\n        .section-title.economy { background: #D51D24; }\n\n        .seats-grid { display: grid; gap: 10px; margin: 0 auto; }\n        .premiere-grid { grid-template-columns: repeat(4, 60px); }\n        .business-grid { grid-template-columns: repeat(4, 55px); }\n        .economy-grid { grid-template-columns: repeat(7, 45px); }\n\n        .seat {\n            width: 100%;\n            aspect-ratio: 1;\n            border-radius: 8px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: 900;\n            font-size: 0.75em;\n            cursor: pointer;\n            transition: all 0.3s;\n            border: 2px solid #000000;\n            position: relative;\n        }\n\n        .seat:hover:not(.occupied):not(.reserved):not(.in-cart) {\n            transform: scale(1.1);\n            box-shadow: 0 5px 15px rgba(0,0,0,0.3);\n        }\n\n        .seat.premiere {\n            background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);\n            color: #000000;\n        }\n        .seat.business { background: #FFFFFF; color: #000000; }\n        .seat.economy-plus { background: #D51D24; color: #FFFFFF; }\n        .seat.economy { background: #D51D24; color: #FFFFFF; }\n\n        .seat.occupied {\n            background: #666666 !important;\n            color: #333333 !important;\n            cursor: not-allowed;\n            opacity: 0.5;\n        }\n\n        .seat.reserved {\n            background: #999999 !important;\n            color: #000000 !important;\n            cursor: default;\n            font-size: 0.65em;\n        }\n\n        \/* Si\u00e8ge dans le panier *\/\n        .seat.in-cart {\n            background: #00aa00 !important;\n            color: #FFFFFF !important;\n            border-color: #007700 !important;\n            cursor: pointer;\n        }\n\n        .seat.in-cart::after {\n            content: '\ud83d\uded2';\n            position: absolute;\n            top: -5px;\n            right: -5px;\n            font-size: 0.8em;\n        }\n\n        \/* ========== L\u00c9GENDE ========== *\/\n        .legend {\n            background: #FFFFFF;\n            padding: 20px;\n            border-radius: 15px;\n            margin-top: 30px;\n            border: 3px solid #D51D24;\n        }\n        .legend h3 { color: #000000; margin-bottom: 15px; font-weight: 900; }\n        .legend-items {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n            gap: 12px;\n        }\n        .legend-item {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            color: #000000;\n            font-weight: 700;\n        }\n        .legend-box {\n            width: 30px; height: 30px;\n            border-radius: 5px;\n            border: 2px solid #000000;\n            flex-shrink: 0;\n        }\n        .legend-box.premiere { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); }\n        .legend-box.business { background: #FFFFFF; }\n        .legend-box.economy-plus { background: #D51D24; }\n        .legend-box.economy { background: #D51D24; }\n        .legend-box.occupied { background: #666666; }\n        .legend-box.reserved { background: #999999; }\n        .legend-box.in-cart { background: #00aa00; }\n\n        \/* ========== OVERLAY ========== *\/\n        .overlay {\n            display: none;\n            position: fixed;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            background: rgba(0,0,0,0.9);\n            z-index: 9999;\n            align-items: center;\n            justify-content: center;\n            padding: 20px;\n            overflow-y: auto;\n        }\n        .overlay.active { display: flex; }\n\n        .overlay-content {\n            background: white;\n            border-radius: 20px;\n            padding: 40px;\n            max-width: 600px;\n            width: 100%;\n            position: relative;\n            border: 5px solid #D51D24;\n            margin: auto;\n        }\n\n        .overlay-close {\n            position: absolute;\n            top: 15px; right: 15px;\n            background: #D51D24;\n            color: white;\n            border: none;\n            width: 40px; height: 40px;\n            border-radius: 50%;\n            font-size: 1.5em;\n            cursor: pointer;\n            font-weight: 900;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n        }\n        .overlay-close:hover { background: #000000; }\n\n        .overlay-header { text-align: center; margin-bottom: 25px; }\n        .overlay-header h2 { color: #000000; font-size: 1.8em; margin-bottom: 10px; }\n\n        .seat-number-display {\n            background: #D51D24;\n            color: white;\n            padding: 10px 25px;\n            border-radius: 10px;\n            font-size: 1.8em;\n            font-weight: 900;\n            display: inline-block;\n            margin-bottom: 10px;\n        }\n\n        .price-display {\n            background: #000000;\n            color: white;\n            padding: 15px;\n            border-radius: 15px;\n            font-size: 2em;\n            font-weight: 900;\n            text-align: center;\n            margin: 15px 0;\n        }\n\n        .benefits-list {\n            background: #f5f5f5;\n            padding: 20px;\n            border-radius: 10px;\n            margin: 15px 0;\n            color: #000000;\n        }\n        .benefits-list h3 { margin-bottom: 12px; color: #D51D24; }\n        .benefits-list ul { list-style: none; padding: 0; }\n        .benefits-list li {\n            padding: 8px 10px;\n            margin-bottom: 6px;\n            background: white;\n            border-radius: 5px;\n            border-left: 4px solid #D51D24;\n            color: #000;\n            font-size: 0.9em;\n        }\n        .benefits-list li::before { content: '\u2713 '; color: #D51D24; font-weight: 900; }\n\n        \/* Bouton ajouter au panier *\/\n        .btn-add-cart {\n            background: #00aa00;\n            color: white;\n            border: none;\n            padding: 18px 40px;\n            font-size: 1.2em;\n            border-radius: 10px;\n            cursor: pointer;\n            width: 100%;\n            font-weight: 900;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n            transition: all 0.3s;\n            margin-top: 10px;\n        }\n        .btn-add-cart:hover {\n            background: #007700;\n            transform: translateY(-2px);\n        }\n\n        .btn-add-cart.already-in {\n            background: #cc0000;\n        }\n        .btn-add-cart.already-in:hover { background: #990000; }\n\n        \/* ========== PANIER FLOTTANT ========== *\/\n        .cart-widget {\n            position: fixed;\n            bottom: 30px;\n            right: 30px;\n            z-index: 8888;\n            transition: all 0.3s;\n        }\n\n        .cart-bubble {\n            background: #D51D24;\n            color: white;\n            border-radius: 20px;\n            padding: 15px 25px;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            box-shadow: 0 10px 40px rgba(213, 29, 36, 0.6);\n            transition: all 0.3s;\n            border: 3px solid #fff;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n        }\n\n        .cart-bubble:hover {\n            transform: translateY(-3px);\n            box-shadow: 0 15px 50px rgba(213, 29, 36, 0.8);\n        }\n\n        .cart-icon { font-size: 1.8em; }\n\n        .cart-info { display: flex; flex-direction: column; }\n\n        .cart-count {\n            font-size: 0.85em;\n            opacity: 0.9;\n            font-weight: 700;\n        }\n\n        .cart-total {\n            font-size: 1.4em;\n            font-weight: 900;\n        }\n\n        .cart-badge {\n            background: #FFD700;\n            color: #000;\n            border-radius: 50%;\n            width: 28px; height: 28px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: 900;\n            font-size: 1em;\n        }\n\n        .cart-hidden { display: none; }\n\n        \/* ========== POPUP PANIER ========== *\/\n        .cart-overlay {\n            display: none;\n            position: fixed;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            background: rgba(0,0,0,0.9);\n            z-index: 9998;\n            align-items: center;\n            justify-content: center;\n            padding: 20px;\n        }\n        .cart-overlay.active { display: flex; }\n\n        .cart-panel {\n            background: white;\n            border-radius: 20px;\n            padding: 35px;\n            max-width: 700px;\n            width: 100%;\n            position: relative;\n            border: 5px solid #D51D24;\n            max-height: 90vh;\n            overflow-y: auto;\n        }\n\n        .cart-panel-close {\n            position: absolute;\n            top: 15px; right: 15px;\n            background: #D51D24;\n            color: white;\n            border: none;\n            width: 40px; height: 40px;\n            border-radius: 50%;\n            font-size: 1.5em;\n            cursor: pointer;\n            font-weight: 900;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n        }\n\n        .cart-panel h2 {\n            color: #000;\n            font-size: 1.8em;\n            margin-bottom: 25px;\n            text-align: center;\n        }\n\n        \/* Liste des si\u00e8ges dans le panier *\/\n        .cart-items { margin-bottom: 25px; }\n\n        .cart-item {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            padding: 15px;\n            background: #f9f9f9;\n            border-radius: 10px;\n            margin-bottom: 10px;\n            border-left: 5px solid #D51D24;\n        }\n\n        .cart-item-info { flex: 1; }\n\n        .cart-item-siege {\n            font-size: 1.3em;\n            font-weight: 900;\n            color: #D51D24;\n        }\n\n        .cart-item-classe {\n            font-size: 0.85em;\n            color: #666;\n            margin-top: 3px;\n        }\n\n        .cart-item-price {\n            font-size: 1.3em;\n            font-weight: 900;\n            color: #000;\n            margin-right: 15px;\n        }\n\n        .cart-item-remove {\n            background: #ff4444;\n            color: white;\n            border: none;\n            width: 32px; height: 32px;\n            border-radius: 50%;\n            cursor: pointer;\n            font-size: 1em;\n            font-weight: 900;\n            transition: all 0.2s;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n        }\n        .cart-item-remove:hover { background: #cc0000; transform: scale(1.1); }\n\n        .cart-total-line {\n            background: #000;\n            color: white;\n            padding: 20px;\n            border-radius: 12px;\n            text-align: center;\n            margin-bottom: 25px;\n        }\n\n        .cart-total-label { font-size: 0.9em; color: #aaa; margin-bottom: 5px; }\n        .cart-total-amount { font-size: 2.2em; font-weight: 900; color: #FFD700; }\n\n        .cart-empty {\n            text-align: center;\n            padding: 40px;\n            color: #999;\n            font-size: 1.1em;\n        }\n\n        \/* ========== FORMULAIRE ========== *\/\n        .form-title {\n            color: #D51D24;\n            font-size: 1.2em;\n            font-weight: 900;\n            margin-bottom: 20px;\n            padding-bottom: 10px;\n            border-bottom: 2px solid #D51D24;\n        }\n\n        .form-group { margin-bottom: 15px; }\n\n        .form-group label {\n            display: block;\n            font-weight: 900;\n            color: #000000;\n            margin-bottom: 6px;\n            font-size: 0.9em;\n        }\n\n        .form-group input,\n        .form-group textarea {\n            width: 100%;\n            padding: 12px 15px;\n            border: 2px solid #ddd;\n            border-radius: 8px;\n            font-size: 1em;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n            color: #000;\n            transition: border-color 0.3s;\n            background: white;\n        }\n\n        .form-group input:focus,\n        .form-group textarea:focus {\n            outline: none;\n            border-color: #D51D24;\n            box-shadow: 0 0 0 3px rgba(213,29,36,0.1);\n        }\n\n        .form-group input.error { border-color: #ff0000; }\n\n        .form-row {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 15px;\n        }\n\n        .btn-validate {\n            background: #D51D24;\n            color: white;\n            border: none;\n            padding: 20px 40px;\n            font-size: 1.2em;\n            border-radius: 10px;\n            cursor: pointer;\n            width: 100%;\n            font-weight: 900;\n            font-family: 'Eurostile', 'Arial Black', sans-serif;\n            transition: all 0.3s;\n            margin-top: 10px;\n        }\n\n        .btn-validate:hover:not(:disabled) {\n            background: #000;\n            transform: translateY(-2px);\n        }\n\n        .btn-validate:disabled {\n            background: #999;\n            cursor: not-allowed;\n        }\n\n        .form-message {\n            margin-top: 15px;\n            border-radius: 10px;\n            overflow: hidden;\n            text-align: center;\n        }\n\n        .msg-success {\n            background: #00aa00;\n            color: white;\n            padding: 20px;\n            font-weight: 900;\n            font-size: 1.1em;\n        }\n\n        .msg-error {\n            background: #ff0000;\n            color: white;\n            padding: 15px;\n            font-weight: 700;\n        }\n\n        @media (max-width: 768px) {\n            h1 { font-size: 1.8em; }\n            .form-row { grid-template-columns: 1fr; }\n            .cart-widget { bottom: 15px; right: 15px; }\n        }\n    <\/style>\n\n\n<div class=\"container\">\n\n    <header>\n        <h1>\ud83d\udeeb EMBARQUEZ POUR LA SAISON 2026<\/h1>\n        <div class=\"subtitle\">S\u00c9LECTION DE VOTRE SI\u00c8GE<\/div>\n    <\/header>\n\n    <div class=\"info-banner\">\n        <strong>\u26a1 CLIQUEZ SUR UN SI\u00c8GE<\/strong> pour l&#8217;ajouter au panier \u2014 vous pouvez en choisir plusieurs !\n    <\/div>\n\n    <div class=\"deck-selector\">\n        <button class=\"deck-btn active\" onclick=\"switchDeck('upper', this)\">PONT SUP\u00c9RIEUR<\/button>\n        <button class=\"deck-btn\" onclick=\"switchDeck('main', this)\">PONT PRINCIPAL<\/button>\n    <\/div>\n\n    <!-- PONT SUP\u00c9RIEUR -->\n    <div id=\"upper-deck\" class=\"deck active\">\n        <div class=\"plane-container\">\n            <div class=\"plane-body\">\n                <div class=\"plane-nose\">PONT SUP\u00c9RIEUR<\/div>\n                <div class=\"section\">\n                    <div class=\"section-title premiere\">\u2728 PREMI\u00c8RE CLASSE<\/div>\n                    <div id=\"upper-premiere\" class=\"seats-grid premiere-grid\"><\/div>\n                <\/div>\n                <div class=\"section\">\n                    <div class=\"section-title business\">\ud83d\udcbc CLASSE AFFAIRES<\/div>\n                    <div id=\"upper-business\" class=\"seats-grid business-grid\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- PONT PRINCIPAL -->\n    <div id=\"main-deck\" class=\"deck\">\n        <div class=\"plane-container\">\n            <div class=\"plane-body\">\n                <div class=\"plane-nose\">PONT PRINCIPAL<\/div>\n                <div class=\"section\">\n                    <div class=\"section-title economy-plus\">\u2b50 \u00c9CONOMIE PLUS<\/div>\n                    <div id=\"main-economy-plus\" class=\"seats-grid economy-grid\"><\/div>\n                <\/div>\n                <div class=\"section\">\n                    <div class=\"section-title economy\">\ud83c\udfab \u00c9CONOMIE<\/div>\n                    <div id=\"main-economy\" class=\"seats-grid economy-grid\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- L\u00c9GENDE -->\n    <div class=\"legend\">\n        <h3>\ud83d\udd11 L\u00c9GENDE<\/h3>\n        <div class=\"legend-items\">\n            <div class=\"legend-item\">\n                <div class=\"legend-box premiere\"><\/div>\n                <span>PREMI\u00c8RE (2500\u20ac)<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box business\"><\/div>\n                <span>AFFAIRES (1500\u20ac)<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box economy-plus\"><\/div>\n                <span>\u00c9CO+ (250\u20ac)<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box economy\"><\/div>\n                <span>\u00c9CO (100\u20ac)<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box in-cart\"><\/div>\n                <span>DANS MON PANIER<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box reserved\"><\/div>\n                <span>R\u00c9SERV\u00c9<\/span>\n            <\/div>\n            <div class=\"legend-item\">\n                <div class=\"legend-box occupied\"><\/div>\n                <span>OCCUP\u00c9<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- ========== PANIER FLOTTANT ========== -->\n<div class=\"cart-widget cart-hidden\" id=\"cart-widget\" onclick=\"openCart()\">\n    <div class=\"cart-bubble\">\n        <div class=\"cart-icon\">\ud83d\uded2<\/div>\n        <div class=\"cart-info\">\n            <div class=\"cart-count\" id=\"cart-count-text\">0 si\u00e8ge<\/div>\n            <div class=\"cart-total\" id=\"cart-total-text\">0\u20ac<\/div>\n        <\/div>\n        <div class=\"cart-badge\" id=\"cart-badge\">0<\/div>\n    <\/div>\n<\/div>\n\n<!-- ========== POPUP D\u00c9TAIL SI\u00c8GE ========== -->\n<div id=\"overlay\" class=\"overlay\" onclick=\"closeOverlay(event)\">\n    <div class=\"overlay-content\" onclick=\"event.stopPropagation()\">\n        <button class=\"overlay-close\" onclick=\"closeOverlay()\">\u00d7<\/button>\n        <div id=\"overlay-body\"><\/div>\n    <\/div>\n<\/div>\n\n<!-- ========== POPUP PANIER ========== -->\n<div id=\"cart-overlay\" class=\"cart-overlay\" onclick=\"closeCart(event)\">\n    <div class=\"cart-panel\" onclick=\"event.stopPropagation()\">\n        <button class=\"cart-panel-close\" onclick=\"closeCart()\">\u00d7<\/button>\n        <h2>\ud83d\uded2 MON PANIER<\/h2>\n        <div id=\"cart-panel-body\"><\/div>\n    <\/div>\n<\/div>\n\n<script>\n\/\/ ============================================\n\/\/ CONFIGURATION\n\/\/ ============================================\nconst classConfig = {\n    'premiere': {\n        title: '\u2728 PREMI\u00c8RE CLASSE',\n        price: 2500,\n        benefits: [\n            'Logo sur box hospitality camion',\n            '1 post sur les r\u00e9seaux du team',\n            '1 pass VIP pour la saison en cours',\n            '2 pack supporter (t-shirt, verres, gourde, poster d\u00e9dicac\u00e9)'\n        ]\n    },\n    'business': {\n        title: '\ud83d\udcbc CLASSE AFFAIRES',\n        price: 1500,\n        benefits: [\n            '2 pack supporter (t-shirt, verres, gourde, poster d\u00e9dicac\u00e9)',\n            'Votre nom sur un panneau dans le box'\n        ]\n    },\n    'economy-plus': {\n        title: '\u2b50 \u00c9CONOMIE PLUS',\n        price: 250,\n        benefits: [\n            '2 pack supporter (t-shirt, verres, gourde, poster d\u00e9dicac\u00e9)',\n            '1 surprise vid\u00e9o lors de la prochaine course'\n        ]\n    },\n    'economy': {\n        title: '\ud83c\udfab \u00c9CONOMIE',\n        price: 100,\n        benefits: [\n            '1 pack supporter (t-shirt, verres, gourde, poster d\u00e9dicac\u00e9)'\n        ]\n    }\n};\n\nconst namedReservations = {\n    'P1A': 'Yam Service',\n    'B6A': 'Mc Les Escargots'\n};\n\nconst occupiedSeats = ['EP24A', 'E51C'];\n\n\/\/ ============================================\n\/\/ PANIER\n\/\/ ============================================\nlet panier = []; \/\/ [{siege, classe, title, price}]\n\nfunction ajouterAuPanier(seatNumber, classType) {\n    \/\/ V\u00e9rifier si d\u00e9j\u00e0 dans le panier\n    const existe = panier.find(item => item.siege === seatNumber);\n\n    if (existe) {\n        \/\/ Retirer du panier\n        panier = panier.filter(item => item.siege !== seatNumber);\n        updateSeatVisual(seatNumber, classType, false);\n    } else {\n        \/\/ Ajouter au panier\n        panier.push({\n            siege:  seatNumber,\n            classe: classType,\n            title:  classConfig[classType].title,\n            price:  classConfig[classType].price\n        });\n        updateSeatVisual(seatNumber, classType, true);\n    }\n\n    updateCartWidget();\n    updateOverlayButton(seatNumber);\n}\n\nfunction retirerDuPanier(seatNumber) {\n    const item = panier.find(i => i.siege === seatNumber);\n    if (item) {\n        panier = panier.filter(i => i.siege !== seatNumber);\n        updateSeatVisual(seatNumber, item.classe, false);\n        updateCartWidget();\n        renderCartPanel();\n    }\n}\n\nfunction updateSeatVisual(seatNumber, classType, inCart) {\n    const seatEl = document.querySelector(`[data-seat=\"${seatNumber}\"]`);\n    if (!seatEl) return;\n\n    if (inCart) {\n        seatEl.classList.add('in-cart');\n    } else {\n        seatEl.classList.remove('in-cart');\n    }\n}\n\nfunction updateCartWidget() {\n    const widget = document.getElementById('cart-widget');\n    const total  = panier.reduce((sum, item) => sum + item.price, 0);\n    const count  = panier.length;\n\n    if (count === 0) {\n        widget.classList.add('cart-hidden');\n    } else {\n        widget.classList.remove('cart-hidden');\n        document.getElementById('cart-count-text').textContent =\n            `${count} si\u00e8ge${count > 1 ? 's' : ''}`;\n        document.getElementById('cart-total-text').textContent =\n            `${total.toLocaleString('fr-FR')}\u20ac`;\n        document.getElementById('cart-badge').textContent = count;\n    }\n}\n\nfunction updateOverlayButton(seatNumber) {\n    const btn = document.getElementById('btn-cart-action');\n    if (!btn) return;\n\n    const inCart = panier.find(i => i.siege === seatNumber);\n    if (inCart) {\n        btn.textContent  = 'RETIRER DU PANIER';\n        btn.classList.add('already-in');\n    } else {\n        btn.textContent  = 'AJOUTER AU PANIER';\n        btn.classList.remove('already-in');\n    }\n}\n\n\/\/ ============================================\n\/\/ TOTAL PAR CLASSE (pour le r\u00e9cap)\n\/\/ ============================================\nfunction getCartSummary() {\n    const summary = {};\n    panier.forEach(item => {\n        if (!summary[item.title]) {\n            summary[item.title] = { count: 0, total: 0, sieges: [] };\n        }\n        summary[item.title].count++;\n        summary[item.title].total += item.price;\n        summary[item.title].sieges.push(item.siege);\n    });\n    return summary;\n}\n\n\/\/ ============================================\n\/\/ POPUP D\u00c9TAIL SI\u00c8GE\n\/\/ ============================================\nfunction showSeatDetails(seatNumber, classType) {\n    const config  = classConfig[classType];\n    const inCart  = panier.find(i => i.siege === seatNumber);\n    const overlayBody = document.getElementById('overlay-body');\n\n    overlayBody.innerHTML = `\n        <div class=\"overlay-header\">\n            <h2>${config.title}<\/h2>\n            <div class=\"seat-number-display\">${seatNumber}<\/div>\n            <div class=\"price-display\">${config.price.toLocaleString('fr-FR')}\u20ac<\/div>\n        <\/div>\n\n        <div class=\"benefits-list\">\n            <h3>\ud83c\udf81 VOS AVANTAGES<\/h3>\n            <ul>\n                ${config.benefits.map(b => `<li>${b}<\/li>`).join('')}\n            <\/ul>\n        <\/div>\n\n        <button\n            class=\"btn-add-cart ${inCart ? 'already-in' : ''}\"\n            id=\"btn-cart-action\"\n            onclick=\"ajouterAuPanier('${seatNumber}', '${classType}')\">\n            ${inCart ? 'RETIRER DU PANIER' : 'AJOUTER AU PANIER'}\n        <\/button>\n\n        ${panier.length > 0 ? `\n        <button\n            style=\"background:#000; color:white; border:2px solid #D51D24;\n                   padding:12px; width:100%; border-radius:8px; margin-top:10px;\n                   cursor:pointer; font-weight:900; font-size:1em;\n                   font-family:'Eurostile','Arial Black',sans-serif;\"\n            onclick=\"closeOverlay(); openCart()\">\n            \ud83d\udc41\ufe0f VOIR MON PANIER (${panier.length} si\u00e8ge${panier.length > 1 ? 's' : ''})\n        <\/button>` : ''}\n    `;\n\n    document.getElementById('overlay').classList.add('active');\n}\n\nfunction closeOverlay(event) {\n    if (!event || event.target.id === 'overlay') {\n        document.getElementById('overlay').classList.remove('active');\n    }\n}\n\n\/\/ ============================================\n\/\/ POPUP PANIER\n\/\/ ============================================\nfunction openCart() {\n    renderCartPanel();\n    document.getElementById('cart-overlay').classList.add('active');\n}\n\nfunction closeCart(event) {\n    if (!event || event.target.id === 'cart-overlay') {\n        document.getElementById('cart-overlay').classList.remove('active');\n    }\n}\n\nfunction renderCartPanel() {\n    const body  = document.getElementById('cart-panel-body');\n    const total = panier.reduce((sum, i) => sum + i.price, 0);\n\n    if (panier.length === 0) {\n        body.innerHTML = `\n            <div class=\"cart-empty\">\n                Votre panier est vide.<br>\n                <span style=\"font-size:0.85em;\">\n                    Cliquez sur un si\u00e8ge pour commencer !\n                <\/span>\n            <\/div>\n        `;\n        return;\n    }\n\n    \/\/ Liste des si\u00e8ges\n    const itemsHTML = panier.map(item => `\n        <div class=\"cart-item\">\n            <div class=\"cart-item-info\">\n                <div class=\"cart-item-siege\"> ${item.siege}<\/div>\n                <div class=\"cart-item-classe\">${item.title}<\/div>\n            <\/div>\n            <div class=\"cart-item-price\">\n                ${item.price.toLocaleString('fr-FR')}\u20ac\n            <\/div>\n            <button class=\"cart-item-remove\"\n                    onclick=\"retirerDuPanier('${item.siege}')\">\u2715<\/button>\n        <\/div>\n    `).join('');\n\n    body.innerHTML = `\n        <div class=\"cart-items\">${itemsHTML}<\/div>\n\n        <div class=\"cart-total-line\">\n            <div class=\"cart-total-label\">TOTAL DE VOTRE R\u00c9SERVATION<\/div>\n            <div class=\"cart-total-amount\">${total.toLocaleString('fr-FR')}\u20ac<\/div>\n            <div style=\"color:#aaa; font-size:0.85em; margin-top:5px;\">\n                ${panier.length} si\u00e8ge${panier.length > 1 ? 's' : ''} s\u00e9lectionn\u00e9${panier.length > 1 ? 's' : ''}\n            <\/div>\n        <\/div>\n\n        <!-- FORMULAIRE -->\n        <div class=\"form-title\">\ud83d\udccb VOS COORDONN\u00c9ES<\/div>\n\n        <form id=\"cart-form\" onsubmit=\"return false;\">\n            <div class=\"form-row\">\n                <div class=\"form-group\">\n                    <label>\ud83d\udc64 NOM *<\/label>\n                    <input type=\"text\" id=\"cart-nom\" placeholder=\"Dupont\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>\ud83d\udc64 PR\u00c9NOM *<\/label>\n                    <input type=\"text\" id=\"cart-prenom\" placeholder=\"Jean\" required>\n                <\/div>\n            <\/div>\n\n            <div class=\"form-group\">\n                <label>\ud83d\udce7 EMAIL *<\/label>\n                <input type=\"email\" id=\"cart-email\" placeholder=\"jean@email.com\" required>\n            <\/div>\n\n            <div class=\"form-group\">\n                <label>\ud83d\udcf1 T\u00c9L\u00c9PHONE<\/label>\n                <input type=\"tel\" id=\"cart-tel\" placeholder=\"06 00 00 00 00\">\n            <\/div>\n\n            <div class=\"form-group\">\n                <label>\ud83c\udfe2 SOCI\u00c9T\u00c9<\/label>\n                <input type=\"text\" id=\"cart-societe\" placeholder=\"Nom de votre entreprise\">\n            <\/div>\n\n            <div class=\"form-group\">\n                <label>\ud83d\udcac MESSAGE<\/label>\n                <textarea id=\"cart-message\"\n                          placeholder=\"Une question ou un message...\"><\/textarea>\n            <\/div>\n\n            <button type=\"button\" class=\"btn-validate\"\n                    id=\"btn-valider\" onclick=\"envoyerPanier()\">\n                \u2708\ufe0f VALIDER MA R\u00c9SERVATION (${total.toLocaleString('fr-FR')}\u20ac)\n            <\/button>\n\n            <div id=\"cart-form-message\" class=\"form-message\"><\/div>\n        <\/form>\n    `;\n}\n\n\/\/ ============================================\n\/\/ ENVOI DU PANIER\n\/\/ ============================================\nfunction envoyerPanier() {\n\n    \/\/ Validation\n    const nom    = document.getElementById('cart-nom');\n    const prenom = document.getElementById('cart-prenom');\n    const email  = document.getElementById('cart-email');\n\n    [nom, prenom, email].forEach(f => f.classList.remove('error'));\n\n    let valide = true;\n    if (!nom.value.trim())    { nom.classList.add('error');    valide = false; }\n    if (!prenom.value.trim()) { prenom.classList.add('error'); valide = false; }\n    if (!email.value.trim() || !email.value.includes('@')) {\n        email.classList.add('error');\n        valide = false;\n    }\n\n    if (!valide) {\n        document.getElementById('cart-form-message').innerHTML = `\n            <div class=\"msg-error\">\n                \u26a0\ufe0f Merci de remplir les champs obligatoires (*)\n            <\/div>\n        `;\n        return;\n    }\n\n    const btn = document.getElementById('btn-valider');\n    btn.disabled    = true;\n    btn.textContent = '\u23f3 Envoi en cours...';\n\n    const total = panier.reduce((sum, i) => sum + i.price, 0);\n\n    const donnees = new FormData();\n    donnees.append('action',   'envoyer_panier_avion');\n    donnees.append('nom',      nom.value.trim());\n    donnees.append('prenom',   prenom.value.trim());\n    donnees.append('email',    email.value.trim());\n    donnees.append('tel',      document.getElementById('cart-tel').value.trim());\n    donnees.append('societe',  document.getElementById('cart-societe').value.trim());\n    donnees.append('message',  document.getElementById('cart-message').value.trim());\n    donnees.append('panier',   JSON.stringify(panier));\n    donnees.append('total',    total);\n\n    if (typeof reservationAjax !== 'undefined') {\n        donnees.append('nonce', reservationAjax.nonce);\n    }\n\n    const ajaxUrl = typeof reservationAjax !== 'undefined'\n        ? reservationAjax.ajaxurl\n        : '\/wp-admin\/admin-ajax.php';\n\n    fetch(ajaxUrl, { method: 'POST', body: donnees })\n    .then(res => res.json())\n    .then(data => {\n        if (data.success) {\n\n            \/\/ Vider le panier visuellement\n            panier.forEach(item => {\n                updateSeatVisual(item.siege, item.classe, false);\n            });\n            panier = [];\n            updateCartWidget();\n\n            document.getElementById('cart-form').style.display = 'none';\n            document.getElementById('cart-form-message').innerHTML = `\n                <div class=\"msg-success\">\n                    \u2705 R\u00c9SERVATION ENVOY\u00c9E !<br>\n                    <span style=\"font-size:0.85em; font-weight:400;\n                                 display:block; margin-top:8px;\">\n                        Un email de confirmation vous a \u00e9t\u00e9 envoy\u00e9.<br>\n                        Notre \u00e9quipe reviendra vers vous rapidement.\n                    <\/span>\n                <\/div>\n            `;\n        } else {\n            document.getElementById('cart-form-message').innerHTML = `\n                <div class=\"msg-error\">\u274c Erreur : ${data.data}<\/div>\n            `;\n            btn.disabled    = false;\n            btn.textContent = '\u2708\ufe0f VALIDER MA R\u00c9SERVATION';\n        }\n    })\n    .catch(() => {\n        document.getElementById('cart-form-message').innerHTML = `\n            <div class=\"msg-error\">\u274c Erreur de connexion. R\u00e9essayez.<\/div>\n        `;\n        btn.disabled    = false;\n        btn.textContent = '\u2708\ufe0f VALIDER MA R\u00c9SERVATION';\n    });\n}\n\n\/\/ ============================================\n\/\/ G\u00c9N\u00c9RATION DES SI\u00c8GES\n\/\/ ============================================\nfunction generateSeats(rows, cols, containerId, classType, prefix) {\n    const container = document.getElementById(containerId);\n    const letters   = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n\n    for (let row = 1; row <= rows; row++) {\n        for (let col = 0; col < cols; col++) {\n            const seatNumber = `${prefix}${row}${letters[col]}`;\n            const seat = document.createElement('div');\n            seat.className    = `seat ${classType}`;\n            seat.dataset.seat = seatNumber;\n\n            if (namedReservations[seatNumber]) {\n                seat.classList.add('reserved');\n                seat.textContent = namedReservations[seatNumber];\n            } else if (occupiedSeats.includes(seatNumber)) {\n                seat.classList.add('occupied');\n                seat.textContent = seatNumber;\n            } else {\n                seat.textContent = seatNumber;\n                seat.onclick = () => showSeatDetails(seatNumber, classType);\n            }\n\n            container.appendChild(seat);\n        }\n    }\n}\n\nfunction switchDeck(deck, btnClicked) {\n    document.querySelectorAll('.deck').forEach(d => d.classList.remove('active'));\n    document.querySelectorAll('.deck-btn').forEach(b => b.classList.remove('active'));\n    document.getElementById(deck + '-deck').classList.add('active');\n    btnClicked.classList.add('active');\n}\n\ndocument.addEventListener('keydown', e => {\n    if (e.key === 'Escape') { closeOverlay(); closeCart(); }\n});\n\n\/\/ ============================================\n\/\/ INIT\n\/\/ ============================================\ngenerateSeats(5,  4, 'upper-premiere',    'premiere',     'P');\ngenerateSeats(15, 4, 'upper-business',    'business',     'B');\ngenerateSeats(20, 7, 'main-economy-plus', 'economy-plus', 'EP');\ngenerateSeats(40, 7, 'main-economy',      'economy',      'E');\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Embarquez pour la saison 2026 \ud83d\udeeb EMBARQUEZ POUR LA SAISON 2026 S\u00c9LECTION DE VOTRE SI\u00c8GE \u26a1 CLIQUEZ SUR UN SI\u00c8GE pour l&#8217;ajouter au panier \u2014 vous pouvez en choisir plusieurs ! PONT SUP\u00c9RIEUR PONT PRINCIPAL PONT SUP\u00c9RIEUR \u2728 PREMI\u00c8RE CLASSE \ud83d\udcbc CLASSE AFFAIRES PONT PRINCIPAL \u2b50 \u00c9CONOMIE PLUS \ud83c\udfab \u00c9CONOMIE \ud83d\udd11 L\u00c9GENDE PREMI\u00c8RE (2500\u20ac) AFFAIRES [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-16","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/pages\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":13,"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/pages\/16\/revisions"}],"predecessor-version":[{"id":38,"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/pages\/16\/revisions\/38"}],"wp:attachment":[{"href":"https:\/\/pms99.fr\/index.php\/wp-json\/wp\/v2\/media?parent=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}