templates/home/index.html.twig line 1

Open in your IDE?
  1. {% extends 'backfront.html.twig' %}
  2. {% block title %}SIP Academy - Formation en Développement Web et Certifications IT{% endblock %}
  3. {% block body %}
  4.     <style>
  5.         /* ===== BASE ===== */
  6.         a { pointer-events: auto !important; z-index: 9999 !important; }
  7.         @media (max-width:768px) {
  8.             .about-lectures { width:100%; }
  9.             .about-lectures img { width:100%; height:auto; }
  10.             .g-recaptcha { transform:scale(0.77); transform-origin:0 0; }
  11.         }
  12.         /* checkout legacy */
  13.         .checkout-area{padding-top:100px;padding-bottom:70px;background-color:#f7f7f7}
  14.         .checkout-area .your-order{background:#fff;padding:30px;border-radius:5px;box-shadow:0 0 10px rgba(0,0,0,.1)}
  15.         .checkout-area .your-order h3{font-size:24px;margin-bottom:20px;text-transform:uppercase;color:#333}
  16.         .checkout-area .your-order table{width:100%;border-collapse:collapse}
  17.         .checkout-area .your-order table th{font-weight:600;text-align:left;padding:10px 0;color:#333;border-bottom:1px solid #f2f2f2}
  18.         .checkout-area .your-order table td{font-weight:400;text-align:left;padding:10px 0;color:#666;border-bottom:1px solid #f2f2f2}
  19.         .checkout-area .your-order table tfoot .order-total th{font-weight:600;padding-top:20px;text-align:right;color:#333}
  20.         .checkout-area .your-order table tfoot .cart-subtotal th{border-top:2px solid #f2f2f2;font-weight:400;padding-top:10px;text-align:right;color:#666}
  21.         .checkout-area .your-order table a{color:#333;text-decoration:none}
  22.         .checkout-area .your-order table a:hover{color:#000;text-decoration:underline}
  23.         @media(max-width:767px){
  24.             .checkout-area .your-order table td:first-child,.checkout-area .your-order table th:first-child{display:none}
  25.             .checkout-area .your-order table td:nth-child(2),.checkout-area .your-order table th:nth-child(2){font-weight:600}
  26.         }
  27.         /* ===== DESIGN TOKENS PREMIUM ===== */
  28.         :root {
  29.             --gold: #FFAE27;
  30.             --gold-dark: #e09500;
  31.             --gold-light: #fff8e6;
  32.             --gold-mid: #ffd07a;
  33.             --navy: #1e3a8a;
  34.             --navy-dark: #152d6e;
  35.             --navy-light: #e8edf8;
  36.             --navy-mid: #2d52b0;
  37.             --text-dark: #0f1f3d;
  38.             --text-body: #374151;
  39.             --text-muted: #6b7280;
  40.             --border-light: #edf0f7;
  41.             --surface-white: #ffffff;
  42.             --surface-gray: #f6f8fc;
  43.             --surface-navy-pale: #f0f4ff;
  44.             --r-sm: 10px;
  45.             --r-md: 16px;
  46.             --r-lg: 24px;
  47.             --r-xl: 32px;
  48.             --sh-xs: 0 1px 4px rgba(30,58,138,.06);
  49.             --sh-sm: 0 4px 16px rgba(30,58,138,.08);
  50.             --sh-md: 0 8px 32px rgba(30,58,138,.12);
  51.             --sh-lg: 0 20px 60px rgba(30,58,138,.18);
  52.             --sh-xl: 0 30px 80px rgba(30,58,138,.25);
  53.         }
  54.         /* ===== SHARED SECTION HEADER ===== */
  55.         .sip-section { padding: 88px 0; }
  56.         .sip-section-alt { background: var(--surface-gray); }
  57.         .sip-section-navy { background: var(--navy); }
  58.         .sip-title-wrap { margin-bottom: 52px; text-align: center; }
  59.         .sip-title-wrap.left { text-align: left; }
  60.         .sip-eyebrow {
  61.             display: inline-flex; align-items: center; gap: 8px;
  62.             background: var(--gold-light); color: var(--gold-dark);
  63.             font-size: 11px; font-weight: 800; letter-spacing: 2px;
  64.             text-transform: uppercase; padding: 5px 16px 5px 10px;
  65.             border-radius: 30px; margin-bottom: 14px;
  66.             border-left: 3px solid var(--gold);
  67.         }
  68.         .sip-eyebrow-navy {
  69.             background: rgba(255,174,39,.12); color: var(--gold);
  70.             border-left-color: var(--gold);
  71.         }
  72.         .sip-title-wrap h2 {
  73.             font-family: 'Plus Jakarta Sans', sans-serif;
  74.             font-size: 36px; font-weight: 800; color: var(--text-dark);
  75.             margin: 0 0 14px; line-height: 1.18; letter-spacing: -0.5px;
  76.         }
  77.         .sip-title-wrap.navy h2 { color: #fff; }
  78.         .sip-title-wrap p { font-size: 16px; color: var(--text-muted); margin: 0; }
  79.         .sip-title-wrap.navy p { color: rgba(255,255,255,.55); }
  80.         .sip-rule {
  81.             width: 48px; height: 4px; border-radius: 3px;
  82.             background: linear-gradient(90deg, var(--gold), var(--gold-mid));
  83.             margin: 16px auto 0;
  84.         }
  85.         .sip-title-wrap.left .sip-rule { margin-left: 0; }
  86.         /* ===== SESSIONS — MODERNE & AMÉLIORÉE ===== */
  87.         .sessions-section {
  88.             padding: 88px 0;
  89.             background: linear-gradient(135deg, #f9fafc 0%, #f3f6fb 100%);
  90.         }
  91.         .s-card {
  92.             background: var(--surface-white);
  93.             border-radius: var(--r-lg);
  94.             border: 1px solid var(--border-light);
  95.             box-shadow: 0 2px 8px rgba(30,58,138,.08);
  96.             display: flex;
  97.             flex-direction: column;
  98.             height: 100%;
  99.             overflow: visible;
  100.             transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease, border-color .3s ease;
  101.             position: relative;
  102.         }
  103.         .s-card:hover {
  104.             transform: translateY(-14px);
  105.             box-shadow: 0 24px 64px rgba(30,58,138,.2);
  106.             border-color: var(--gold);
  107.         }
  108.         /* Image area — Full height et plus visible */
  109.         .s-card-img {
  110.             position: relative;
  111.             height: 340px;
  112.             overflow: hidden;
  113.             flex-shrink: 0;
  114.             background: linear-gradient(135deg, #f5f8ff 0%, #ffffff 100%);
  115.             display: flex;
  116.             align-items: center;
  117.             justify-content: center;
  118.         }
  119.         .s-card-img img {
  120.             width: 100%;
  121.             height: 100%;
  122.             object-fit: contain;
  123.             object-position: center;
  124.             padding: 10px;
  125.             box-sizing: border-box;
  126.             background: white;
  127.             transition: transform .55s cubic-bezier(.4,0,.2,1);
  128.         }
  129.         .s-card:hover .s-card-img img {
  130.             transform: scale(1.05);
  131.         }
  132.         /* Image gradient overlay subtle */
  133.         .s-card-img::after {
  134.             content: '';
  135.             position: absolute;
  136.             inset: 0;
  137.             background: linear-gradient(to bottom, transparent 50%, rgba(15,31,61,.2) 100%);
  138.             opacity: 0;
  139.             transition: opacity .3s;
  140.         }
  141.         .s-card:hover .s-card-img::after {
  142.             opacity: 1;
  143.         }
  144.         /* Date badge — en haut à droite visible */
  145.         .s-date-box {
  146.             position: absolute;
  147.             top: 14px;
  148.             right: 14px;
  149.             z-index: 10;
  150.             background: var(--surface-white);
  151.             border-radius: 12px;
  152.             box-shadow: 0 8px 28px rgba(30,58,138,.3);
  153.             width: 74px;
  154.             overflow: hidden;
  155.             text-align: center;
  156.             border: 2.5px solid var(--gold);
  157.             transition: all .3s cubic-bezier(.4,0,.2,1);
  158.         }
  159.         .s-card:hover .s-date-box {
  160.             transform: translateY(-4px);
  161.             box-shadow: 0 12px 36px rgba(30,58,138,.4);
  162.             border-color: var(--gold-dark);
  163.         }
  164.         .s-date-box-top {
  165.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  166.             padding: 7px 0 6px;
  167.             font-size: 10px;
  168.             font-weight: 800;
  169.             color: #fff;
  170.             letter-spacing: 1.3px;
  171.             text-transform: uppercase;
  172.         }
  173.         .s-date-box-num {
  174.             padding: 7px 0 9px;
  175.             font-size: 26px;
  176.             font-weight: 800;
  177.             color: var(--navy);
  178.             line-height: 1;
  179.             background: var(--surface-white);
  180.         }
  181.         /* Location chip */
  182.         .s-location-chip {
  183.             position: absolute;
  184.             bottom: 14px;
  185.             right: 14px;
  186.             z-index: 2;
  187.             background: rgba(255,255,255,.95);
  188.             backdrop-filter: blur(8px);
  189.             border-radius: 20px;
  190.             padding: 6px 12px;
  191.             font-size: 11px;
  192.             font-weight: 600;
  193.             color: var(--navy);
  194.             display: flex;
  195.             align-items: center;
  196.             gap: 5px;
  197.             max-width: 180px;
  198.             overflow: hidden;
  199.             text-overflow: ellipsis;
  200.             white-space: nowrap;
  201.             box-shadow: 0 4px 12px rgba(0,0,0,.1);
  202.         }
  203.         .s-location-chip i {
  204.             color: var(--gold-dark);
  205.             font-size: 11px;
  206.             flex-shrink: 0;
  207.         }
  208.         /* Card body — padding normal */
  209.         .s-card-body {
  210.             padding: 24px;
  211.             display: flex;
  212.             flex-direction: column;
  213.             flex: 1;
  214.         }
  215.         .s-card-body h3 {
  216.             font-family: 'Plus Jakarta Sans', sans-serif;
  217.             font-size: 18px;
  218.             font-weight: 700;
  219.             color: var(--text-dark);
  220.             margin: 0 0 12px;
  221.             line-height: 1.4;
  222.             min-height: auto;
  223.         }
  224.         .s-card-body h3 a {
  225.             color: inherit;
  226.             text-decoration: none;
  227.             transition: color .2s;
  228.         }
  229.         .s-card-body h3 a:hover {
  230.             color: var(--gold);
  231.         }
  232.         .s-time-chip {
  233.             display: inline-flex;
  234.             align-items: center;
  235.             gap: 8px;
  236.             background: linear-gradient(135deg, var(--gold), var(--gold-mid));
  237.             color: var(--navy);
  238.             font-size: 12px;
  239.             font-weight: 700;
  240.             padding: 10px 16px;
  241.             border-radius: 30px;
  242.             border: none;
  243.             margin-bottom: 14px;
  244.             align-self: flex-start;
  245.             box-shadow: 0 4px 12px rgba(255,174,39,.25);
  246.             transition: all .3s cubic-bezier(.4,0,.2,1);
  247.             letter-spacing: 0.5px;
  248.         }
  249.         .s-time-chip:hover {
  250.             transform: translateY(-2px);
  251.             box-shadow: 0 6px 18px rgba(255,174,39,.35);
  252.         }
  253.         .s-time-chip i {
  254.             color: var(--navy);
  255.             font-size: 13px;
  256.         }
  257.         .s-desc {
  258.             font-size: 14px;
  259.             color: var(--text-muted);
  260.             line-height: 1.7;
  261.             flex: 1;
  262.             margin-bottom: 20px;
  263.             display: -webkit-box;
  264.             -webkit-line-clamp: 2;
  265.             -webkit-box-orient: vertical;
  266.             overflow: hidden;
  267.         }
  268.         .s-btn {
  269.             display: inline-flex;
  270.             align-items: center;
  271.             gap: 8px;
  272.             background: linear-gradient(135deg, var(--navy), var(--navy-dark));
  273.             color: #fff;
  274.             font-size: 13px;
  275.             font-weight: 700;
  276.             padding: 12px 24px;
  277.             border-radius: 30px;
  278.             text-decoration: none;
  279.             align-self: flex-start;
  280.             margin-top: auto;
  281.             transition: all .3s cubic-bezier(.4,0,.2,1);
  282.             box-shadow: 0 4px 14px rgba(30,58,138,.25);
  283.             border: none;
  284.             cursor: pointer;
  285.         }
  286.         .s-btn:hover {
  287.             background: linear-gradient(135deg, var(--navy-dark), var(--navy));
  288.             color: #fff;
  289.             transform: translateX(4px);
  290.             box-shadow: 0 8px 24px rgba(30,58,138,.35);
  291.         }
  292.         .s-btn-arrow {
  293.             width: 20px;
  294.             height: 20px;
  295.             border-radius: 50%;
  296.             background: var(--gold);
  297.             display: flex;
  298.             align-items: center;
  299.             justify-content: center;
  300.             flex-shrink: 0;
  301.             transition: transform .3s;
  302.         }
  303.         .s-btn:hover .s-btn-arrow {
  304.             transform: translateX(3px);
  305.         }
  306.         .s-btn-arrow i {
  307.             font-size: 10px;
  308.             color: var(--navy);
  309.         }
  310.         /* ===== VIDEOS ===== */
  311.         .videos-section {
  312.             padding: 88px 0;
  313.             background: linear-gradient(135deg, var(--navy) 0%, #1a2d7e 50%, var(--navy-dark) 100%);
  314.             position: relative;
  315.             overflow: hidden;
  316.         }
  317.         .videos-section::before {
  318.             content: '';
  319.             position: absolute;
  320.             top: -140px;
  321.             right: -140px;
  322.             width: 480px;
  323.             height: 480px;
  324.             background: radial-gradient(circle, rgba(255,174,39,.08) 0%, transparent 70%);
  325.             border-radius: 50%;
  326.         }
  327.         .videos-section::after {
  328.             content: '';
  329.             position: absolute;
  330.             bottom: -80px;
  331.             left: -80px;
  332.             width: 300px;
  333.             height: 300px;
  334.             background: radial-gradient(circle, rgba(255,174,39,.06) 0%, transparent 70%);
  335.             border-radius: 50%;
  336.         }
  337.         .v-card {
  338.             background: rgba(255,255,255,.08);
  339.             border: 1.5px solid rgba(255,255,255,.12);
  340.             border-radius: var(--r-lg);
  341.             overflow: hidden;
  342.             transition: all .3s cubic-bezier(.4,0,.2,1);
  343.             position: relative;
  344.         }
  345.         .v-card:hover {
  346.             transform: translateY(-10px);
  347.             border-color: var(--gold);
  348.             box-shadow: 0 20px 50px rgba(0,0,0,.4);
  349.             background: rgba(255,255,255,.1);
  350.         }
  351.         .v-card video {
  352.             width: 100%;
  353.             height: 200px;
  354.             object-fit: cover;
  355.             display: block;
  356.             background: #000;
  357.         }
  358.         .v-card-body {
  359.             padding: 18px 20px 22px;
  360.             display: flex;
  361.             align-items: flex-start;
  362.             gap: 14px;
  363.         }
  364.         .v-play-btn {
  365.             width: 42px;
  366.             height: 42px;
  367.             border-radius: 50%;
  368.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  369.             display: flex;
  370.             align-items: center;
  371.             justify-content: center;
  372.             flex-shrink: 0;
  373.             box-shadow: 0 6px 16px rgba(255,174,39,.35);
  374.             transition: transform .3s;
  375.         }
  376.         .v-card:hover .v-play-btn {
  377.             transform: scale(1.1);
  378.         }
  379.         .v-play-btn i {
  380.             color: #fff;
  381.             font-size: 13px;
  382.             margin-left: 2px;
  383.         }
  384.         .v-card-body h4 {
  385.             font-family: 'Plus Jakarta Sans', sans-serif;
  386.             font-size: 14.5px;
  387.             font-weight: 700;
  388.             color: rgba(255,255,255,.95);
  389.             margin: 0;
  390.             line-height: 1.4;
  391.         }
  392.         .v-card-num {
  393.             position: absolute;
  394.             top: 14px;
  395.             right: 14px;
  396.             background: rgba(0,0,0,.6);
  397.             backdrop-filter: blur(4px);
  398.             color: var(--gold);
  399.             font-size: 11px;
  400.             font-weight: 700;
  401.             padding: 4px 10px;
  402.             border-radius: 20px;
  403.             border: 1px solid rgba(255,174,39,.3);
  404.         }
  405.         .yt-cta-link {
  406.             display: inline-flex;
  407.             align-items: center;
  408.             gap: 8px;
  409.             color: var(--gold);
  410.             font-size: 14px;
  411.             font-weight: 700;
  412.             text-decoration: none;
  413.             border: 1.5px solid var(--gold);
  414.             padding: 10px 24px;
  415.             border-radius: 30px;
  416.             margin-top: 20px;
  417.             transition: all .3s cubic-bezier(.4,0,.2,1);
  418.             background: rgba(255,174,39,.05);
  419.         }
  420.         .yt-cta-link:hover {
  421.             background: var(--gold);
  422.             border-color: var(--gold);
  423.             color: var(--navy);
  424.             transform: translateY(-2px);
  425.         }
  426.         /* ===== STATISTIQUES — MODERNISÉES ===== */
  427.         .fun-factor-area {
  428.             padding: 72px 0;
  429.             background: linear-gradient(135deg, #f0f5ff 0%, #f9f5ff 100%);
  430.         }
  431.         .single-fun-factor {
  432.             text-align: center;
  433.             padding: 40px 30px;
  434.             background: var(--surface-white);
  435.             border-radius: var(--r-lg);
  436.             border: 2px solid transparent;
  437.             transition: all .3s cubic-bezier(.4,0,.2,1);
  438.             box-shadow: var(--sh-sm);
  439.             position: relative;
  440.             overflow: hidden;
  441.         }
  442.         .single-fun-factor::before {
  443.             content: '';
  444.             position: absolute;
  445.             top: -50%;
  446.             right: -50%;
  447.             width: 200%;
  448.             height: 200%;
  449.             background: radial-gradient(circle, var(--gold) 0%, transparent 70%);
  450.             opacity: 0;
  451.             transition: opacity .3s;
  452.         }
  453.         .single-fun-factor:hover {
  454.             border-color: var(--gold);
  455.             box-shadow: var(--sh-lg);
  456.             transform: translateY(-8px);
  457.         }
  458.         .single-fun-factor:hover::before {
  459.             opacity: 0.05;
  460.         }
  461.         .single-fun-factor h2 {
  462.             font-size: 48px;
  463.             font-weight: 800;
  464.             margin: 0 0 8px;
  465.             background: linear-gradient(135deg, var(--navy), var(--navy-mid));
  466.             -webkit-background-clip: text;
  467.             -webkit-text-fill-color: transparent;
  468.             background-clip: text;
  469.             line-height: 1;
  470.         }
  471.         .single-fun-factor h2 span {
  472.             color: var(--gold);
  473.         }
  474.         .single-fun-factor h4 {
  475.             font-size: 16px;
  476.             font-weight: 700;
  477.             color: var(--text-dark);
  478.             margin: 0;
  479.             text-transform: uppercase;
  480.             letter-spacing: 1px;
  481.         }
  482.         /* ===== TESTIMONIALS — REDESIGNED (Cards blanches) ===== */
  483.         .testi-section {
  484.             padding: 96px 0;
  485.             background: linear-gradient(135deg, var(--navy) 0%, #252544 100%);
  486.             position: relative;
  487.             overflow: hidden;
  488.         }
  489.         .testi-section::before {
  490.             content: '';
  491.             position: absolute;
  492.             top: 0;
  493.             left: 0;
  494.             right: 0;
  495.             bottom: 0;
  496.             background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.3'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  497.             opacity: 0.5;
  498.         }
  499.         /* Slider */
  500.         .testi-outer {
  501.             max-width: 1000px;
  502.             margin: 0 auto;
  503.             overflow: hidden;
  504.             position: relative;
  505.         }
  506.         .testi-track {
  507.             display: flex;
  508.             transition: transform .55s cubic-bezier(.4,0,.2,1);
  509.         }
  510.         .testi-slide {
  511.             min-width: 50%;
  512.             padding: 0 16px;
  513.             box-sizing: border-box;
  514.         }
  515.         @media(max-width:768px) {
  516.             .testi-slide {
  517.                 min-width: 100%;
  518.             }
  519.         }
  520.         .testi-card {
  521.             background: var(--surface-white);
  522.             border: 1px solid var(--border-light);
  523.             border-radius: var(--r-lg);
  524.             padding: 0;
  525.             position: relative;
  526.             height: 100%;
  527.             transition: all .3s cubic-bezier(.4,0,.2,1);
  528.             box-shadow: var(--sh-sm);
  529.             overflow: hidden;
  530.             display: flex;
  531.             flex-direction: column;
  532.         }
  533.         .testi-card:hover {
  534.             border-color: var(--gold);
  535.             box-shadow: var(--sh-lg);
  536.             transform: translateY(-8px);
  537.         }
  538.         /* Avatar en haut de la card */
  539.         .testi-header {
  540.             padding: 24px 24px 0;
  541.             display: flex;
  542.             align-items: center;
  543.             gap: 14px;
  544.             border-bottom: 1px solid var(--border-light);
  545.         }
  546.         .testi-avatar {
  547.             width: 56px;
  548.             height: 56px;
  549.             border-radius: 50%;
  550.             object-fit: cover;
  551.             border: 3px solid var(--gold);
  552.             flex-shrink: 0;
  553.         }
  554.         .testi-meta {
  555.             flex: 1;
  556.         }
  557.         .testi-name {
  558.             font-family: 'Plus Jakarta Sans', sans-serif;
  559.             font-size: 15px;
  560.             font-weight: 700;
  561.             color: var(--text-dark);
  562.             margin: 0 0 2px;
  563.         }
  564.         .testi-role {
  565.             font-size: 12px;
  566.             color: var(--gold);
  567.             margin: 0;
  568.             font-weight: 600;
  569.             letter-spacing: .4px;
  570.         }
  571.         /* Contenu de la card */
  572.         .testi-content {
  573.             padding: 20px 24px 24px;
  574.             display: flex;
  575.             flex-direction: column;
  576.             flex: 1;
  577.         }
  578.         .testi-stars {
  579.             display: flex;
  580.             gap: 4px;
  581.             margin-bottom: 12px;
  582.         }
  583.         .testi-stars i {
  584.             color: var(--gold);
  585.             font-size: 13px;
  586.         }
  587.         .testi-text {
  588.             font-size: 14px;
  589.             color: var(--text-body);
  590.             line-height: 1.7;
  591.             margin: 0;
  592.             flex: 1;
  593.         }
  594.         .testi-quote-mark {
  595.             font-size: 32px;
  596.             line-height: 0.8;
  597.             color: var(--gold);
  598.             font-family: Georgia, serif;
  599.             margin: 0 0 8px;
  600.             display: block;
  601.             opacity: 0.6;
  602.         }
  603.         /* Controls */
  604.         .testi-controls {
  605.             display: flex;
  606.             align-items: center;
  607.             justify-content: center;
  608.             gap: 18px;
  609.             margin-top: 44px;
  610.             position: relative;
  611.             z-index: 2;
  612.         }
  613.         .testi-arrow {
  614.             width: 48px;
  615.             height: 48px;
  616.             border-radius: 50%;
  617.             border: 1.5px solid var(--border-light);
  618.             background: var(--surface-white);
  619.             color: var(--navy);
  620.             font-size: 20px;
  621.             cursor: pointer;
  622.             display: flex;
  623.             align-items: center;
  624.             justify-content: center;
  625.             transition: all .22s cubic-bezier(.4,0,.2,1);
  626.             box-shadow: var(--sh-xs);
  627.         }
  628.         .testi-arrow:hover {
  629.             background: var(--gold);
  630.             border-color: var(--gold);
  631.             color: var(--navy);
  632.             transform: scale(1.05);
  633.         }
  634.         .testi-dots {
  635.             display: flex;
  636.             gap: 8px;
  637.             align-items: center;
  638.         }
  639.         .testi-dot {
  640.             width: 8px;
  641.             height: 8px;
  642.             border-radius: 50%;
  643.             background: var(--border-light);
  644.             cursor: pointer;
  645.             transition: all .25s;
  646.         }
  647.         .testi-dot.active {
  648.             background: var(--gold);
  649.             transform: scale(1.4);
  650.         }
  651.         /* ===== ACTUALITÉS ===== */
  652.         .actu-section {
  653.             padding: 88px 0;
  654.             background: var(--surface-white);
  655.         }
  656.         .actu-header {
  657.             display: flex;
  658.             align-items: flex-end;
  659.             justify-content: space-between;
  660.             margin-bottom: 40px;
  661.             flex-wrap: wrap;
  662.             gap: 16px;
  663.         }
  664.         .actu-arrows {
  665.             display: flex;
  666.             gap: 10px;
  667.         }
  668.         .actu-arr {
  669.             width: 44px;
  670.             height: 44px;
  671.             border-radius: 50%;
  672.             background: var(--surface-gray);
  673.             border: 1.5px solid var(--border-light);
  674.             color: var(--text-dark);
  675.             font-size: 18px;
  676.             cursor: pointer;
  677.             display: flex;
  678.             align-items: center;
  679.             justify-content: center;
  680.             transition: all .22s cubic-bezier(.4,0,.2,1);
  681.         }
  682.         .actu-arr:hover {
  683.             background: var(--navy);
  684.             border-color: var(--navy);
  685.             color: #fff;
  686.             transform: translateY(-2px);
  687.         }
  688.         /* Scroll container */
  689.         .actu-rail {
  690.             overflow-x: auto;
  691.             scroll-behavior: smooth;
  692.             scrollbar-width: none;
  693.             -ms-overflow-style: none;
  694.             cursor: grab;
  695.             padding-bottom: 4px;
  696.         }
  697.         .actu-rail::-webkit-scrollbar {
  698.             display: none;
  699.         }
  700.         .actu-rail:active {
  701.             cursor: grabbing;
  702.         }
  703.         .actu-belt {
  704.             display: flex;
  705.             gap: 28px;
  706.             width: max-content;
  707.         }
  708.         /* Card — wider, light */
  709.         .a-card {
  710.             width: 370px;
  711.             flex-shrink: 0;
  712.             background: var(--surface-white);
  713.             border: 1px solid var(--border-light);
  714.             border-radius: var(--r-lg);
  715.             box-shadow: var(--sh-xs);
  716.             overflow: hidden;
  717.             display: flex;
  718.             flex-direction: column;
  719.             transition: all .3s cubic-bezier(.4,0,.2,1);
  720.         }
  721.         .a-card:hover {
  722.             transform: translateY(-8px);
  723.             box-shadow: var(--sh-lg);
  724.             border-color: var(--gold);
  725.         }
  726.         /* ===== ACTUALITÉS - IMAGES PERFECT FIT ===== */
  727.         .a-card-img {
  728.             height: 210px;
  729.             overflow: hidden;
  730.             position: relative;
  731.             flex-shrink: 0;
  732.             background: linear-gradient(135deg, #f8faff 0%, #ffffff 100%);
  733.             display: flex;
  734.             align-items: center;
  735.             justify-content: center;
  736.         }
  737.         .a-card-img a {
  738.             display: flex;
  739.             align-items: center;
  740.             justify-content: center;
  741.             width: 100%;
  742.             height: 100%;
  743.             text-decoration: none;
  744.         }
  745.         .a-card-img img {
  746.             width: auto;
  747.             height: auto;
  748.             max-width: 100%;
  749.             max-height: 100%;
  750.             object-fit: contain;
  751.             object-position: center;
  752.             transition: transform .5s cubic-bezier(.4,0,.2,1);
  753.         }
  754.         /* Garder l'effet zoom au hover */
  755.         .a-card:hover .a-card-img img {
  756.             transform: scale(1.08);
  757.         }
  758.         /* Overlay subtil au hover (optionnel) */
  759.         .a-card-img::after {
  760.             content: '';
  761.             position: absolute;
  762.             top: 0;
  763.             left: 0;
  764.             right: 0;
  765.             bottom: 0;
  766.             background: linear-gradient(135deg, rgba(255,174,39,0) 0%, rgba(255,174,39,0.1) 100%);
  767.             opacity: 0;
  768.             transition: opacity .3s ease;
  769.             pointer-events: none;
  770.         }
  771.         .a-badge {
  772.             position: absolute;
  773.             top: 14px;
  774.             left: 14px;
  775.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  776.             color: var(--navy);
  777.             font-size: 10px;
  778.             font-weight: 800;
  779.             letter-spacing: 1.2px;
  780.             text-transform: uppercase;
  781.             padding: 6px 14px;
  782.             border-radius: 20px;
  783.             box-shadow: 0 4px 12px rgba(255,174,39,.3);
  784.         }
  785.         .a-card-body {
  786.             padding: 22px 24px 26px;
  787.             display: flex;
  788.             flex-direction: column;
  789.             flex: 1;
  790.         }
  791.         .a-meta {
  792.             display: flex;
  793.             gap: 16px;
  794.             font-size: 11.5px;
  795.             color: var(--text-muted);
  796.             margin-bottom: 12px;
  797.         }
  798.         .a-meta span {
  799.             display: flex;
  800.             align-items: center;
  801.             gap: 5px;
  802.         }
  803.         .a-meta i {
  804.             color: var(--gold-dark);
  805.         }
  806.         .a-card-body h3 {
  807.             font-family: 'Plus Jakarta Sans', sans-serif;
  808.             font-size: 17px;
  809.             font-weight: 700;
  810.             color: var(--text-dark);
  811.             margin: 0 0 12px;
  812.             line-height: 1.4;
  813.             min-height: 48px;
  814.         }
  815.         .a-card-body h3 a {
  816.             color: inherit;
  817.             text-decoration: none;
  818.             transition: color .2s;
  819.         }
  820.         .a-card-body h3 a:hover {
  821.             color: var(--gold);
  822.         }
  823.         .a-excerpt {
  824.             font-size: 14px;
  825.             color: var(--text-body);
  826.             line-height: 1.68;
  827.             flex: 1;
  828.             margin-bottom: 20px;
  829.             display: -webkit-box;
  830.             -webkit-line-clamp: 3;
  831.             -webkit-box-orient: vertical;
  832.             overflow: hidden;
  833.         }
  834.         .a-read {
  835.             display: inline-flex;
  836.             align-items: center;
  837.             gap: 8px;
  838.             font-size: 13px;
  839.             font-weight: 700;
  840.             color: var(--navy);
  841.             text-decoration: none;
  842.             margin-top: auto;
  843.             align-self: flex-start;
  844.             transition: all .2s;
  845.         }
  846.         .a-read .a-read-icon {
  847.             width: 28px;
  848.             height: 28px;
  849.             border-radius: 50%;
  850.             background: var(--navy-light);
  851.             color: var(--navy);
  852.             display: flex;
  853.             align-items: center;
  854.             justify-content: center;
  855.             font-size: 11px;
  856.             transition: all .2s;
  857.         }
  858.         .a-read:hover {
  859.             color: var(--gold-dark);
  860.             gap: 12px;
  861.         }
  862.         .a-read:hover .a-read-icon {
  863.             background: var(--gold);
  864.             color: var(--navy);
  865.         }
  866.         /* ===== ABONNEMENTS — MODERNISÉS ===== */
  867.         .event-area {
  868.             padding: 88px 0;
  869.             background: linear-gradient(135deg, #fafbfc 0%, #f5f8ff 100%);
  870.         }
  871.         .section-title-wrapper {
  872.             margin-bottom: 50px;
  873.             text-align: center;
  874.         }
  875.         .section-title {
  876.             position: relative;
  877.             text-align: center;
  878.         }
  879.         .section-title h3 {
  880.             font-family: 'Plus Jakarta Sans', sans-serif;
  881.             font-size: 36px;
  882.             font-weight: 800;
  883.             color: var(--text-dark);
  884.             margin: 0 0 12px 0;
  885.             position: relative;
  886.             padding-bottom: 20px;
  887.         }
  888.         .section-title h3::after {
  889.             content: '';
  890.             position: absolute;
  891.             bottom: 0;
  892.             left: 50%;
  893.             transform: translateX(-50%);
  894.             width: 48px;
  895.             height: 4px;
  896.             background: linear-gradient(90deg, var(--gold), var(--gold-mid));
  897.             border-radius: 2px;
  898.         }
  899.         .section-title p {
  900.             font-size: 15px;
  901.             color: var(--text-muted);
  902.             margin: 0;
  903.             max-width: 600px;
  904.             margin-left: auto;
  905.             margin-right: auto;
  906.         }
  907.         .single-event-item {
  908.             background: var(--surface-white);
  909.             border: 1px solid var(--border-light);
  910.             border-radius: var(--r-lg);
  911.             overflow: hidden;
  912.             box-shadow: 0 2px 10px rgba(30,58,138,.08);
  913.             transition: all .3s cubic-bezier(.4,0,.2,1);
  914.             display: flex;
  915.             flex-direction: column;
  916.             height: 100%;
  917.         }
  918.         .single-event-item:hover {
  919.             transform: translateY(-14px);
  920.             box-shadow: 0 24px 64px rgba(30,58,138,.2);
  921.             border-color: var(--gold);
  922.         }
  923.         .single-event-image {
  924.             position: relative;
  925.             height: 280px;
  926.             overflow: hidden;
  927.             background: linear-gradient(135deg, #f5f8ff 0%, #ffffff 100%);
  928.             display: flex;
  929.             align-items: center;
  930.             justify-content: center;
  931.         }
  932.         .single-event-image a {
  933.             display: flex;
  934.             align-items: center;
  935.             justify-content: center;
  936.             width: 100%;
  937.             height: 100%;
  938.             position: relative;
  939.             padding: 10px;
  940.             box-sizing: border-box;
  941.         }
  942.         .single-event-image img {
  943.             width: 100%;
  944.             height: 100%;
  945.             object-fit: contain;
  946.             object-position: center;
  947.             transition: transform .5s cubic-bezier(.4,0,.2,1);
  948.         }
  949.         .single-event-item:hover .single-event-image img {
  950.             transform: scale(1.05);
  951.         }
  952.         .single-event-image span {
  953.             position: absolute;
  954.             top: 12px;
  955.             left: 12px;
  956.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  957.             color: var(--navy);
  958.             padding: 8px 14px;
  959.             border-radius: 6px;
  960.             font-weight: 700;
  961.             font-size: 9px;
  962.             white-space: nowrap;
  963.             z-index: 3;
  964.             box-shadow: 0 4px 16px rgba(255,174,39,.3);
  965.             letter-spacing: 0.8px;
  966.             text-transform: uppercase;
  967.             transition: all .3s cubic-bezier(.4,0,.2,1);
  968.             border: 1px solid rgba(255,255,255,.4);
  969.         }
  970.         .single-event-item:hover .single-event-image span {
  971.             transform: translateY(-2px);
  972.             box-shadow: 0 6px 20px rgba(255,174,39,.4);
  973.         }
  974.         .single-event-text {
  975.             padding: 28px;
  976.             display: flex;
  977.             flex-direction: column;
  978.             flex: 1;
  979.         }
  980.         .single-event-text h3 {
  981.             margin: 0 0 14px;
  982.             font-size: 24px;
  983.             font-weight: 800;
  984.             background: linear-gradient(135deg, var(--navy-dark), var(--navy-dark));
  985.             -webkit-background-clip: text;
  986.             -webkit-text-fill-color: transparent;
  987.             background-clip: text;
  988.             font-family: 'Plus Jakarta Sans', sans-serif;
  989.         }
  990.         .single-event-text h3 a {
  991.             color: var(--gold);
  992.             text-decoration: none;
  993.             transition: all .2s;
  994.         }
  995.         .single-event-text h3 a:hover {
  996.             filter: brightness(1.1);
  997.         }
  998.         .single-item-comment-view {
  999.             padding: 16px 18px;
  1000.             background: linear-gradient(135deg, rgba(255,174,39,.08), rgba(255,174,39,.03));
  1001.             border-radius: 10px;
  1002.             border-left: 4px solid var(--gold);
  1003.             border-top: 1px solid rgba(255,174,39,.2);
  1004.             margin-bottom: 18px;
  1005.             font-size: 13px;
  1006.             color: var(--text-body);
  1007.             line-height: 1.9;
  1008.             box-shadow: inset 0 2px 8px rgba(30,58,138,.03);
  1009.             font-weight: 500;
  1010.         }
  1011.         .single-item-comment-view i {
  1012.             color: var(--gold) !important;
  1013.             margin-right: 8px;
  1014.             font-weight: 700;
  1015.             margin-left: 2px;
  1016.         }
  1017.         .single-item-comment-view span {
  1018.             display: inline-block;
  1019.             padding: 4px 0;
  1020.         }
  1021.         .single-event-text p {
  1022.             font-size: 13px;
  1023.             color: var(--text-muted);
  1024.             margin: 0 0 20px 0;
  1025.             font-weight: 500;
  1026.             padding: 8px 12px;
  1027.             background: var(--surface-gray);
  1028.             border-radius: 6px;
  1029.             border-left: 3px solid var(--gold);
  1030.         }
  1031.         .single-event-text .button-default {
  1032.             align-self: flex-start;
  1033.             margin-top: auto;
  1034.             padding: 13px 32px;
  1035.             background: linear-gradient(135deg, var(--navy), var(--navy-dark));
  1036.             color: #fff;
  1037.             border-radius: 30px;
  1038.             text-decoration: none;
  1039.             font-weight: 700;
  1040.             font-size: 13px;
  1041.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1042.             box-shadow: 0 4px 14px rgba(30,58,138,.25);
  1043.             border: none;
  1044.             cursor: pointer;
  1045.             letter-spacing: 0.5px;
  1046.         }
  1047.         .single-event-text .button-default:hover {
  1048.             background: linear-gradient(135deg, var(--navy-dark), var(--navy));
  1049.             transform: translateX(5px);
  1050.             box-shadow: 0 8px 24px rgba(30,58,138,.35);
  1051.         }
  1052.         /* ===== BADGE DATE AMÉLIORÉ - COMPLÈTEMENT VISIBLE ===== */
  1053.         .s-card-img {
  1054.             position: relative;
  1055.             height: 340px;
  1056.             overflow: visible; /* Changé de 'hidden' à 'visible' pour que le badge dépasse */
  1057.             flex-shrink: 0;
  1058.             background: linear-gradient(135deg, #f5f8ff 0%, #ffffff 100%);
  1059.             display: flex;
  1060.             align-items: center;
  1061.             justify-content: center;
  1062.         }
  1063.         .s-card-img img {
  1064.             width: 100%;
  1065.             height: 100%;
  1066.             object-fit: contain;
  1067.             object-position: center;
  1068.             padding: 10px;
  1069.             box-sizing: border-box;
  1070.             background: white;
  1071.             transition: transform .55s cubic-bezier(.4,0,.2,1);
  1072.             border-radius: var(--r-lg);
  1073.         }
  1074.         /* Date badge - ENTIÈREMENT VISIBLE, positionné en bas à gauche de l'image */
  1075.         .s-date-box {
  1076.             position: absolute;
  1077.             bottom: -15px;  /* Sort du bas de l'image pour être bien visible */
  1078.             left: 20px;
  1079.             z-index: 20;
  1080.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  1081.             border-radius: 16px;
  1082.             box-shadow: 0 12px 28px rgba(0,0,0,.25);
  1083.             width: 80px;
  1084.             overflow: hidden;
  1085.             text-align: center;
  1086.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1087.             border: 2px solid white;
  1088.         }
  1089.         .s-card:hover .s-date-box {
  1090.             transform: translateY(-5px) scale(1.05);
  1091.             box-shadow: 0 16px 32px rgba(0,0,0,.3);
  1092.         }
  1093.         .s-date-box-top {
  1094.             background: rgba(0,0,0,0.15);
  1095.             padding: 6px 0 5px;
  1096.             font-size: 10px;
  1097.             font-weight: 800;
  1098.             color: #fff;
  1099.             letter-spacing: 1.5px;
  1100.             text-transform: uppercase;
  1101.         }
  1102.         .s-date-box-num {
  1103.             padding: 6px 0 10px;
  1104.             font-size: 28px;
  1105.             font-weight: 800;
  1106.             color: #fff;
  1107.             line-height: 1;
  1108.             background: transparent;
  1109.         }
  1110.         /* Location chip - repositionné en bas à droite */
  1111.         .s-location-chip {
  1112.             position: absolute;
  1113.             bottom: -12px;  /* Sort légèrement de l'image */
  1114.             right: 20px;
  1115.             z-index: 20;
  1116.             background: rgba(255,255,255,.98);
  1117.             backdrop-filter: blur(8px);
  1118.             border-radius: 30px;
  1119.             padding: 8px 16px;
  1120.             font-size: 11px;
  1121.             font-weight: 600;
  1122.             color: var(--navy);
  1123.             display: flex;
  1124.             align-items: center;
  1125.             gap: 6px;
  1126.             max-width: 200px;
  1127.             overflow: hidden;
  1128.             text-overflow: ellipsis;
  1129.             white-space: nowrap;
  1130.             box-shadow: 0 8px 20px rgba(0,0,0,.15);
  1131.             border: 1px solid rgba(255,174,39,.3);
  1132.         }
  1133.         .s-location-chip i {
  1134.             color: var(--gold-dark);
  1135.             font-size: 11px;
  1136.             flex-shrink: 0;
  1137.         }
  1138.         /* Ajustement du body pour compenser le badge qui dépasse */
  1139.         .s-card-body {
  1140.             padding: 32px 24px 24px;
  1141.             display: flex;
  1142.             flex-direction: column;
  1143.             flex: 1;
  1144.         }
  1145.         /* ===== SESSIONS — BADGE DATE EN HAUT DE L'IMAGE ===== */
  1146.         .s-card-img {
  1147.             position: relative;
  1148.             height: 340px;
  1149.             overflow: visible; /* Permet au badge de dépasser */
  1150.             flex-shrink: 0;
  1151.             background: linear-gradient(135deg, #f5f8ff 0%, #ffffff 100%);
  1152.             display: flex;
  1153.             align-items: center;
  1154.             justify-content: center;
  1155.         }
  1156.         .s-card-img img {
  1157.             width: 100%;
  1158.             height: 100%;
  1159.             object-fit: contain;
  1160.             object-position: center;
  1161.             padding: 10px;
  1162.             box-sizing: border-box;
  1163.             background: white;
  1164.             transition: transform .55s cubic-bezier(.4,0,.2,1);
  1165.             border-radius: var(--r-lg);
  1166.         }
  1167.         /* Date badge - POSITIONNÉ EN HAUT DE L'IMAGE (horizontal) */
  1168.         .s-date-box {
  1169.             position: absolute;
  1170.             top: -12px;  /* Positionné en haut, dépasse légèrement */
  1171.             left: 20px;
  1172.             z-index: 20;
  1173.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  1174.             border-radius: 40px;
  1175.             box-shadow: 0 8px 20px rgba(0,0,0,.2);
  1176.             overflow: hidden;
  1177.             text-align: center;
  1178.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1179.             border: 2px solid white;
  1180.             display: flex;
  1181.             flex-direction: row; /* HORIZONTAL */
  1182.             align-items: center;
  1183.             padding: 0;
  1184.         }
  1185.         .s-card:hover .s-date-box {
  1186.             transform: translateY(-3px);
  1187.             box-shadow: 0 12px 28px rgba(0,0,0,.25);
  1188.         }
  1189.         .s-date-box-top {
  1190.             background: rgba(0,0,0,0.15);
  1191.             padding: 8px 14px;
  1192.             font-size: 11px;
  1193.             font-weight: 800;
  1194.             color: #fff;
  1195.             letter-spacing: 1.5px;
  1196.             text-transform: uppercase;
  1197.         }
  1198.         .s-date-box-num {
  1199.             padding: 8px 16px;
  1200.             font-size: 20px;
  1201.             font-weight: 800;
  1202.             color: #fff;
  1203.             line-height: 1;
  1204.             background: transparent;
  1205.         }
  1206.         /* Location chip - repositionné en bas à droite (inchangé) */
  1207.         .s-location-chip {
  1208.             position: absolute;
  1209.             bottom: 14px;
  1210.             right: 14px;
  1211.             z-index: 20;
  1212.             background: rgba(255,255,255,.98);
  1213.             backdrop-filter: blur(8px);
  1214.             border-radius: 30px;
  1215.             padding: 8px 16px;
  1216.             font-size: 11px;
  1217.             font-weight: 600;
  1218.             color: var(--navy);
  1219.             display: flex;
  1220.             align-items: center;
  1221.             gap: 6px;
  1222.             max-width: 200px;
  1223.             overflow: hidden;
  1224.             text-overflow: ellipsis;
  1225.             white-space: nowrap;
  1226.             box-shadow: 0 4px 12px rgba(0,0,0,.1);
  1227.             border: 1px solid rgba(255,174,39,.3);
  1228.         }
  1229.         /* 1. Supprimer l'espace en haut et uniformiser l'image */
  1230.         .s-card-img {
  1231.             position: relative;
  1232.             height: 250px; /* Ajustez selon votre besoin */
  1233.             overflow: hidden;
  1234.             margin: 0; /* Supprime les marges externes */
  1235.             padding: 0; /* Supprime les paddings internes */
  1236.         }
  1237.         .s-card-img img {
  1238.             width: 100%;
  1239.             height: 100%;
  1240.             object-fit: cover;
  1241.             display: block; /* Supprime l'espace résiduel sous l'image */
  1242.         }
  1243.         /* 2. Aligner Date et Adresse sur la même ligne en bas */
  1244.         .s-card-bottom-meta {
  1245.             position: absolute;
  1246.             bottom: 15px;
  1247.             left: 15px;
  1248.             right: 15px;
  1249.             display: flex;
  1250.             justify-content: space-between;
  1251.             align-items: center; /* Force le même niveau vertical pour les deux */
  1252.             z-index: 5;
  1253.         }
  1254.         /* 3. Style compact du Badge Date */
  1255.         .s-date-box {
  1256.             width: 50px;
  1257.             background: white;
  1258.             border-radius: 6px;
  1259.             box-shadow: 0 4px 10px rgba(0,0,0,0.2);
  1260.             text-align: center;
  1261.             line-height: 1;
  1262.         }
  1263.         .s-date-box-top {
  1264.             background: #001f3f; /* Navy */
  1265.             color: #ffd700;    /* Gold */
  1266.             font-size: 9px;
  1267.             padding: 3px 0;
  1268.             font-weight: bold;
  1269.             border-radius: 6px 6px 0 0;
  1270.         }
  1271.         .s-date-box-num {
  1272.             font-size: 18px;
  1273.             font-weight: bold;
  1274.             color: #333;
  1275.             padding: 4px 0;
  1276.         }
  1277.         /* 4. Style du Chip Location (Même hauteur visuelle que la date) */
  1278.         .s-location-chip {
  1279.             background: rgba(255, 255, 255, 0.95);
  1280.             padding: 8px 12px;
  1281.             border-radius: 30px;
  1282.             font-size: 11px;
  1283.             font-weight: 600;
  1284.             color: #333;
  1285.             display: flex;
  1286.             align-items: center;
  1287.             gap: 6px;
  1288.             box-shadow: 0 4px 10px rgba(0,0,0,0.1);
  1289.             height: fit-content; /* S'adapte pour rester aligné */
  1290.         }
  1291.         /* ===== ABONNEMENTS — IMAGE PLUS GRANDE, BADGES SUPPRIMÉS ===== */
  1292.         .single-event-item {
  1293.             background: var(--surface-white);
  1294.             border-radius: var(--r-lg);
  1295.             overflow: hidden;
  1296.             box-shadow: 0 8px 28px rgba(30,58,138,.12);
  1297.             transition: all .35s cubic-bezier(.4,0,.2,1);
  1298.             display: flex;
  1299.             flex-direction: column;
  1300.             height: 100%;
  1301.             position: relative;
  1302.         }
  1303.         .single-event-item:hover {
  1304.             transform: translateY(-12px);
  1305.             box-shadow: 0 28px 48px rgba(30,58,138,.2);
  1306.         }
  1307.         /* IMAGE PLUS GRANDE */
  1308.         .single-event-image {
  1309.             position: relative;
  1310.             height: 300px; /* Augmenté de 240px à 300px */
  1311.             overflow: hidden;
  1312.             background: linear-gradient(135deg, #f8faff 0%, #ffffff 100%);
  1313.             display: flex;
  1314.             align-items: center;
  1315.             justify-content: center;
  1316.             padding: 0px;
  1317.         }
  1318.         .single-event-image a {
  1319.             display: flex;
  1320.             align-items: center;
  1321.             justify-content: center;
  1322.             width: 100%;
  1323.             height: 100%;
  1324.             position: relative;
  1325.         }
  1326.         .single-event-image img {
  1327.             width: auto;
  1328.             height: auto;
  1329.             max-width: 100%;
  1330.             max-height: 100%;
  1331.             object-fit: contain;
  1332.             transition: transform .4s cubic-bezier(.4,0,.2,1);
  1333.         }
  1334.         .single-event-item:hover .single-event-image img {
  1335.             transform: scale(1.05);
  1336.         }
  1337.         /* PRIX BADGE UNIQUEMENT (pas d'offre limitée) */
  1338.         .single-event-image .price-badge {
  1339.             position: absolute;
  1340.             top: 16px;
  1341.             left: 16px;
  1342.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  1343.             color: var(--navy);
  1344.             padding: 10px 20px;
  1345.             border-radius: 40px;
  1346.             font-weight: 800;
  1347.             font-size: 16px;
  1348.             z-index: 3;
  1349.             box-shadow: 0 6px 16px rgba(255,174,39,.35);
  1350.             transition: all .3s;
  1351.         }
  1352.         .single-event-item:hover .single-event-image .price-badge {
  1353.             transform: scale(1.05);
  1354.         }
  1355.         /* SUPPRESSION du badge offre limitée - commenté/retiré */
  1356.         .single-event-text {
  1357.             padding: 24px;
  1358.             display: flex;
  1359.             flex-direction: column;
  1360.             flex: 1;
  1361.         }
  1362.         /* Titre */
  1363.         .single-event-text h3 {
  1364.             margin: 0 0 8px;
  1365.             font-size: 22px;
  1366.             font-weight: 800;
  1367.             color: var(--text-dark);
  1368.             font-family: 'Plus Jakarta Sans', sans-serif;
  1369.         }
  1370.         /* Prix dans le texte (secondaire) */
  1371.         .single-event-text .price-text {
  1372.             font-size: 18px;
  1373.             font-weight: 700;
  1374.             color: var(--gold-dark);
  1375.             margin-bottom: 16px;
  1376.             display: inline-block;
  1377.         }
  1378.         /* Liste des fonctionnalités améliorée */
  1379.         .features-list {
  1380.             list-style: none;
  1381.             padding: 0;
  1382.             margin: 16px 0 20px;
  1383.             background: var(--surface-gray);
  1384.             border-radius: var(--r-md);
  1385.             padding: 16px 18px;
  1386.         }
  1387.         .features-list li {
  1388.             display: flex;
  1389.             align-items: center;
  1390.             gap: 10px;
  1391.             font-size: 13px;
  1392.             color: var(--text-body);
  1393.             padding: 8px 0;
  1394.             border-bottom: 1px solid rgba(0,0,0,.05);
  1395.         }
  1396.         .features-list li:last-child {
  1397.             border-bottom: none;
  1398.         }
  1399.         .features-list li i {
  1400.             color: var(--gold);
  1401.             width: 18px;
  1402.             font-size: 12px;
  1403.             flex-shrink: 0;
  1404.         }
  1405.         /* Durée */
  1406.         .duration-badge {
  1407.             display: inline-flex;
  1408.             align-items: center;
  1409.             gap: 8px;
  1410.             background: var(--navy-light);
  1411.             padding: 10px 16px;
  1412.             border-radius: 40px;
  1413.             margin-bottom: 20px;
  1414.             width: fit-content;
  1415.         }
  1416.         .duration-badge i {
  1417.             color: var(--gold);
  1418.             font-size: 13px;
  1419.         }
  1420.         .duration-badge span {
  1421.             font-size: 13px;
  1422.             font-weight: 600;
  1423.             color: var(--navy);
  1424.         }
  1425.         /* Bouton CTA */
  1426.         .single-event-text .button-default {
  1427.             align-self: stretch;
  1428.             text-align: center;
  1429.             margin-top: auto;
  1430.             padding: 14px 24px;
  1431.             background: linear-gradient(135deg, var(--navy), var(--navy-dark));
  1432.             color: #fff;
  1433.             border-radius: 50px;
  1434.             text-decoration: none;
  1435.             font-weight: 700;
  1436.             font-size: 14px;
  1437.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1438.             box-shadow: 0 4px 14px rgba(30,58,138,.25);
  1439.             border: none;
  1440.             cursor: pointer;
  1441.             letter-spacing: 0.5px;
  1442.             display: flex;
  1443.             align-items: center;
  1444.             justify-content: center;
  1445.             gap: 8px;
  1446.         }
  1447.         .single-event-text .button-default:hover {
  1448.             background: linear-gradient(135deg, var(--navy-dark), var(--navy));
  1449.             transform: translateY(-3px);
  1450.             box-shadow: 0 8px 24px rgba(30,58,138,.35);
  1451.             gap: 12px;
  1452.         }
  1453.         .single-event-text .button-default i {
  1454.             font-size: 12px;
  1455.             transition: transform .2s;
  1456.         }
  1457.         .single-event-text .button-default:hover i {
  1458.             transform: translateX(4px);
  1459.         }
  1460.         /* =====================================================
  1461.    VIDÉOS - SCROLL HORIZONTAL
  1462.    ===================================================== */
  1463.         .videos-slider-container {
  1464.             position: relative;
  1465.             display: flex;
  1466.             align-items: center;
  1467.             gap: 15px;
  1468.             margin-top: 40px;
  1469.         }
  1470.         /* Boutons de navigation */
  1471.         .videos-nav-btn {
  1472.             width: 48px;
  1473.             height: 48px;
  1474.             border-radius: 50%;
  1475.             background: rgba(255,255,255,0.15);
  1476.             backdrop-filter: blur(10px);
  1477.             border: 1.5px solid rgba(255,174,39,0.5);
  1478.             color: var(--gold);
  1479.             font-size: 20px;
  1480.             cursor: pointer;
  1481.             display: flex;
  1482.             align-items: center;
  1483.             justify-content: center;
  1484.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1485.             flex-shrink: 0;
  1486.             z-index: 10;
  1487.         }
  1488.         .videos-nav-btn:hover {
  1489.             background: var(--gold);
  1490.             border-color: var(--gold);
  1491.             color: var(--navy);
  1492.             transform: scale(1.1);
  1493.         }
  1494.         /* Rail de défilement */
  1495.         .videos-rail {
  1496.             flex: 1;
  1497.             overflow-x: auto;
  1498.             scroll-behavior: smooth;
  1499.             scrollbar-width: none; /* Firefox */
  1500.             -ms-overflow-style: none; /* IE/Edge */
  1501.             cursor: grab;
  1502.             border-radius: var(--r-lg);
  1503.         }
  1504.         .videos-rail::-webkit-scrollbar {
  1505.             display: none; /* Chrome/Safari */
  1506.         }
  1507.         .videos-rail:active {
  1508.             cursor: grabbing;
  1509.         }
  1510.         /* Belt des vidéos */
  1511.         .videos-belt {
  1512.             display: flex;
  1513.             gap: 24px;
  1514.             width: max-content;
  1515.             padding: 15px 5px;
  1516.         }
  1517.         /* Carte vidéo individuelle */
  1518.         .videos-card {
  1519.             width: 300px;
  1520.             flex-shrink: 0;
  1521.             background: rgba(255,255,255,.08);
  1522.             border: 1.5px solid rgba(255,255,255,.12);
  1523.             border-radius: var(--r-lg);
  1524.             overflow: hidden;
  1525.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1526.             position: relative;
  1527.         }
  1528.         .videos-card:hover {
  1529.             transform: translateY(-10px);
  1530.             border-color: var(--gold);
  1531.             box-shadow: 0 20px 50px rgba(0,0,0,.4);
  1532.             background: rgba(255,255,255,.1);
  1533.         }
  1534.         .videos-card video {
  1535.             width: 100%;
  1536.             height: 180px;
  1537.             object-fit: cover;
  1538.             display: block;
  1539.             background: #000;
  1540.         }
  1541.         .videos-card-body {
  1542.             padding: 18px 20px 22px;
  1543.             display: flex;
  1544.             align-items: flex-start;
  1545.             gap: 14px;
  1546.         }
  1547.         .videos-play-btn {
  1548.             width: 42px;
  1549.             height: 42px;
  1550.             border-radius: 50%;
  1551.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  1552.             display: flex;
  1553.             align-items: center;
  1554.             justify-content: center;
  1555.             flex-shrink: 0;
  1556.             box-shadow: 0 6px 16px rgba(255,174,39,.35);
  1557.             transition: transform .3s;
  1558.             cursor: pointer;
  1559.         }
  1560.         .videos-card:hover .videos-play-btn {
  1561.             transform: scale(1.1);
  1562.         }
  1563.         .videos-play-btn i {
  1564.             color: #fff;
  1565.             font-size: 13px;
  1566.             margin-left: 2px;
  1567.         }
  1568.         .videos-card-body h4 {
  1569.             font-family: 'Plus Jakarta Sans', sans-serif;
  1570.             font-size: 14.5px;
  1571.             font-weight: 700;
  1572.             color: rgba(255,255,255,.95);
  1573.             margin: 0;
  1574.             line-height: 1.4;
  1575.         }
  1576.         .videos-card-num {
  1577.             position: absolute;
  1578.             top: 14px;
  1579.             right: 14px;
  1580.             background: rgba(0,0,0,.6);
  1581.             backdrop-filter: blur(4px);
  1582.             color: var(--gold);
  1583.             font-size: 11px;
  1584.             font-weight: 700;
  1585.             padding: 4px 10px;
  1586.             border-radius: 20px;
  1587.             border: 1px solid rgba(255,174,39,.3);
  1588.             z-index: 2;
  1589.         }
  1590.         /* Indicateur de défilement */
  1591.         .videos-scroll-indicator {
  1592.             margin-top: 30px;
  1593.             display: flex;
  1594.             justify-content: center;
  1595.         }
  1596.         .videos-scroll-bar {
  1597.             width: 60px;
  1598.             height: 3px;
  1599.             background: rgba(255,255,255,0.2);
  1600.             border-radius: 3px;
  1601.             position: relative;
  1602.             transition: width .3s;
  1603.         }
  1604.         /* Responsive */
  1605.         @media (max-width: 768px) {
  1606.             .videos-nav-btn {
  1607.                 width: 38px;
  1608.                 height: 38px;
  1609.                 font-size: 16px;
  1610.             }
  1611.             .videos-card {
  1612.                 width: 260px;
  1613.             }
  1614.             .videos-card video {
  1615.                 height: 150px;
  1616.             }
  1617.             .videos-card-body h4 {
  1618.                 font-size: 12px;
  1619.             }
  1620.             .videos-slider-container {
  1621.                 gap: 8px;
  1622.             }
  1623.         }
  1624.         @media (max-width: 576px) {
  1625.             .videos-card {
  1626.                 width: 240px;
  1627.             }
  1628.             .videos-nav-btn {
  1629.                 width: 32px;
  1630.                 height: 32px;
  1631.                 font-size: 14px;
  1632.             }
  1633.         }
  1634.         /* =====================================================
  1635.    SESSIONS - BOUTONS DE SCROLL (sans modifier le design)
  1636.    ===================================================== */
  1637.         /* =====================================================
  1638.            SESSIONS - CORRECTION CARTES BLANCHES
  1639.            ===================================================== */
  1640.         /* Correction : ajouter le fond blanc et les styles de la carte */
  1641.         .sessions-card {
  1642.             width: 350px;
  1643.             flex-shrink: 0;
  1644.             background: var(--surface-white);  /* Fond blanc */
  1645.             border: 1px solid var(--border-light);  /* Bordure */
  1646.             border-radius: var(--r-lg);  /* Coins arrondis */
  1647.             overflow: hidden;
  1648.             transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease, border-color .3s ease;
  1649.             box-shadow: var(--sh-sm);
  1650.         }
  1651.         .sessions-card:hover {
  1652.             transform: translateY(-8px);
  1653.             box-shadow: var(--sh-lg);
  1654.             border-color: var(--gold);
  1655.         }
  1656.         /* S'assurer que le contenu de la carte est bien visible */
  1657.         .sessions-card .s-card-body {
  1658.             background: var(--surface-white);
  1659.         }
  1660.         /* Responsive */
  1661.         @media (max-width: 992px) {
  1662.             .sessions-card {
  1663.                 width: 320px;
  1664.             }
  1665.         }
  1666.         @media (max-width: 768px) {
  1667.             .sessions-card {
  1668.                 width: 280px;
  1669.             }
  1670.         }
  1671.         @media (max-width: 576px) {
  1672.             .sessions-card {
  1673.                 width: 260px;
  1674.             }
  1675.         }
  1676.         .sessions-slider-container {
  1677.             position: relative;
  1678.             display: flex;
  1679.             align-items: center;
  1680.             gap: 15px;
  1681.             margin-top: 40px;
  1682.         }
  1683.         /* Boutons de navigation */
  1684.         .sessions-nav-btn {
  1685.             width: 44px;
  1686.             height: 44px;
  1687.             border-radius: 50%;
  1688.             background: var(--surface-white);
  1689.             border: 1.5px solid var(--border-light);
  1690.             color: var(--navy);
  1691.             font-size: 18px;
  1692.             cursor: pointer;
  1693.             display: flex;
  1694.             align-items: center;
  1695.             justify-content: center;
  1696.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1697.             flex-shrink: 0;
  1698.             z-index: 10;
  1699.             box-shadow: var(--sh-sm);
  1700.         }
  1701.         .sessions-nav-btn:hover {
  1702.             background: var(--gold);
  1703.             border-color: var(--gold);
  1704.             color: var(--navy);
  1705.             transform: scale(1.1);
  1706.         }
  1707.         /* Rail de défilement - remplace la row */
  1708.         .sessions-rail {
  1709.             flex: 1;
  1710.             overflow-x: auto;
  1711.             scroll-behavior: smooth;
  1712.             scrollbar-width: none;
  1713.             -ms-overflow-style: none;
  1714.             cursor: grab;
  1715.         }
  1716.         .sessions-rail::-webkit-scrollbar {
  1717.             display: none;
  1718.         }
  1719.         .sessions-rail:active {
  1720.             cursor: grabbing;
  1721.         }
  1722.         /* Belt des cartes */
  1723.         .sessions-belt {
  1724.             display: flex;
  1725.             gap: 28px;
  1726.             width: max-content;
  1727.             padding: 10px 5px;
  1728.         }
  1729.         /* Chaque carte garde sa largeur d'origine */
  1730.         .sessions-card {
  1731.             width: 350px;
  1732.             flex-shrink: 0;
  1733.         }
  1734.         /* Responsive */
  1735.         @media (max-width: 992px) {
  1736.             .sessions-card {
  1737.                 width: 320px;
  1738.             }
  1739.             .sessions-belt {
  1740.                 gap: 20px;
  1741.             }
  1742.         }
  1743.         @media (max-width: 768px) {
  1744.             .sessions-nav-btn {
  1745.                 width: 38px;
  1746.                 height: 38px;
  1747.                 font-size: 16px;
  1748.             }
  1749.             .sessions-slider-container {
  1750.                 gap: 10px;
  1751.             }
  1752.             .sessions-card {
  1753.                 width: 280px;
  1754.             }
  1755.         }
  1756.         @media (max-width: 576px) {
  1757.             .sessions-nav-btn {
  1758.                 width: 34px;
  1759.                 height: 34px;
  1760.                 font-size: 14px;
  1761.             }
  1762.             .sessions-card {
  1763.                 width: 260px;
  1764.             }
  1765.             .sessions-belt {
  1766.                 gap: 15px;
  1767.             }
  1768.         }
  1769.         /* =====================================================
  1770.    MESSAGE AUCUNE SESSION
  1771.    ===================================================== */
  1772.         .no-sessions-message {
  1773.             text-align: center;
  1774.             padding: 60px 40px;
  1775.             background: var(--surface-white);
  1776.             border-radius: var(--r-lg);
  1777.             border: 1px solid var(--border-light);
  1778.             box-shadow: var(--sh-sm);
  1779.             max-width: 600px;
  1780.             margin: 0 auto;
  1781.         }
  1782.         .no-sessions-icon {
  1783.             font-size: 64px;
  1784.             color: var(--gold);
  1785.             margin-bottom: 20px;
  1786.         }
  1787.         .no-sessions-message h3 {
  1788.             font-family: 'Plus Jakarta Sans', sans-serif;
  1789.             font-size: 24px;
  1790.             font-weight: 700;
  1791.             color: var(--text-dark);
  1792.             margin-bottom: 12px;
  1793.         }
  1794.         .no-sessions-message p {
  1795.             font-size: 15px;
  1796.             color: var(--text-muted);
  1797.             margin-bottom: 25px;
  1798.             line-height: 1.6;
  1799.         }
  1800.         .no-sessions-btn {
  1801.             display: inline-flex;
  1802.             align-items: center;
  1803.             gap: 10px;
  1804.             background: linear-gradient(135deg, var(--navy), var(--navy-dark));
  1805.             color: #fff;
  1806.             font-size: 14px;
  1807.             font-weight: 600;
  1808.             padding: 12px 28px;
  1809.             border-radius: 40px;
  1810.             text-decoration: none;
  1811.             transition: all .3s cubic-bezier(.4,0,.2,1);
  1812.             box-shadow: 0 4px 14px rgba(30,58,138,.25);
  1813.         }
  1814.         .no-sessions-btn:hover {
  1815.             background: linear-gradient(135deg, var(--navy-dark), var(--navy));
  1816.             transform: translateY(-3px);
  1817.             box-shadow: 0 8px 24px rgba(30,58,138,.35);
  1818.             gap: 14px;
  1819.             color: #fff;
  1820.         }
  1821.         .no-sessions-btn i {
  1822.             font-size: 16px;
  1823.         }
  1824.         /* Responsive */
  1825.         @media (max-width: 768px) {
  1826.             .no-sessions-message {
  1827.                 padding: 40px 25px;
  1828.             }
  1829.             .no-sessions-icon {
  1830.                 font-size: 48px;
  1831.             }
  1832.             .no-sessions-message h3 {
  1833.                 font-size: 20px;
  1834.             }
  1835.             .no-sessions-message p {
  1836.                 font-size: 13px;
  1837.             }
  1838.             .no-sessions-btn {
  1839.                 font-size: 13px;
  1840.                 padding: 10px 22px;
  1841.             }
  1842.         }
  1843.     </style>
  1844.     <!-- SLIDER -->
  1845.     <div class="slider-area">
  1846.         <div class="hero-slider owl-carousel">
  1847.             {% for ban in ban %}
  1848.                 <div class="single-slider" style="background-image:url('{{ asset('uploads/banniere/'~ ban.image) }}')">
  1849.                     <div class="hero-slider-content">
  1850.                         <h1>{{ ban.titre }}</h1>
  1851.                         <p>{{ ban.description }}</p>
  1852.                         <div class="slider-btn" style="-webkit-animation-name:fadeInUp;animation-name:fadeInUp;-webkit-animation-delay:1200ms;animation-delay:1200ms;">
  1853.                             <a class="button-default" href="{{ ban.lienboutou }}" target="_blank">Voir plus</a>
  1854.                         </div>
  1855.                     </div>
  1856.                 </div>
  1857.             {% endfor %}
  1858.         </div>
  1859.     </div>
  1860.     <!-- ABOUT -->
  1861.     <div class="about-area mt-95">
  1862.         <div class="container">
  1863.             <div class="row">
  1864.                 <div class="col-lg-7">
  1865.                     <div class="about-container">
  1866.                         <h3>{{ setting.description1 }}</h3>
  1867.                         <p style="text-align:justify">{{ setting.description2 }}</p>
  1868.                         <a class="button-default" href="{{ path('app_about') }}">plus de détails</a>
  1869.                     </div>
  1870.                 </div>
  1871.                 <div class="col-lg-5">
  1872.                     <div class="about-image-area img-full">
  1873.                         <img src="{{ asset('uploads/apropos/' ~ setting.imageapropos) }}" alt="">
  1874.                     </div>
  1875.                 </div>
  1876.             </div>
  1877.         </div>
  1878.     </div>
  1879.     <!-- =====================================================
  1880.          SESSIONS — MODERNE & AMÉLIORÉE
  1881.          ===================================================== -->
  1882.     <!-- =====================================================
  1883.        SESSIONS — AVEC BOUTONS DE SCROLL
  1884.        ===================================================== -->
  1885.     <!-- =====================================================
  1886.        SESSIONS — AVEC BOUTONS DE SCROLL ET MESSAGE SI VIDE
  1887.        ===================================================== -->
  1888.     <section class="sessions-section">
  1889.         <div class="container">
  1890.             <div class="sip-title-wrap">
  1891.                 <h2>Prochaines Sessions</h2>
  1892.                 <p>Rejoignez nos prochaines sessions de formation en présentiel et à distance</p>
  1893.                 <div class="sip-rule"></div>
  1894.             </div>
  1895.             {% if evenements is empty %}
  1896.                 <!-- Message quand aucune session -->
  1897.                 <div class="no-sessions-message">
  1898.                     <div class="no-sessions-icon">
  1899.                         <i class="fa fa-calendar-times-o"></i>
  1900.                     </div>
  1901.                     <h3>Aucune session programmée pour le moment</h3>
  1902.                     <p>De nouvelles sessions seront bientôt disponibles. Revenez prochainement ou contactez-nous pour plus d'informations.</p>
  1903.                 </div>
  1904.             {% else %}
  1905.                 <!-- Conteneur avec boutons de navigation (seulement s'il y a des sessions) -->
  1906.                 <div class="sessions-slider-container">
  1907.                     <button class="sessions-nav-btn sessions-prev" id="sessionsPrev">
  1908.                         <i class="fa fa-chevron-left"></i>
  1909.                     </button>
  1910.                     <div class="sessions-rail" id="sessionsRail">
  1911.                         <div class="sessions-belt">
  1912.                             {% for evenement in evenements %}
  1913.                                 <div class="sessions-card">
  1914.                                     <div class="s-card-img" style="position: relative; overflow: hidden; height: 250px;">
  1915.                                         <a href="{{ path('app_details_session',{'slug':evenement.slug}) }}">
  1916.                                             {% if evenement.image %}
  1917.                                                 <img src="{{ asset('uploads/evenement/'~ evenement.image) }}" alt="{{ evenement.titre }}" style="width: 100%; height: 100%; object-fit: cover; display: block;">
  1918.                                             {% else %}
  1919.                                                 <img src="{{ asset('assets2/img/placeholder.jpg') }}" alt="Image" style="width: 100%; height: 100%; object-fit: cover; display: block;">
  1920.                                             {% endif %}
  1921.                                         </a>
  1922.                                     </div>
  1923.                                     <div class="s-card-body">
  1924.                                         <h3><a href="{{ path('app_details_session',{'slug':evenement.slug}) }}">{{ evenement.titre }}</a></h3>
  1925.                                         <span class="s-time-chip">
  1926.                                         <i class="fa fa-clock-o"></i>
  1927.                                         {{ evenement.starttime|date('d/m · H:i') }} → {{ evenement.endtime|date('d/m · H:i') }}
  1928.                                     </span>
  1929.                                         <div class="s-desc">
  1930.                                             {{ evenement.descriptionshort|striptags|slice(0, 200)|raw }}
  1931.                                             {% if evenement.descriptionshort|striptags|length > 200 %}...{% endif %}
  1932.                                         </div>
  1933.                                         <a class="s-btn" href="{{ path('app_details_session',{'slug':evenement.slug}) }}">
  1934.                                             Voir les détails
  1935.                                             <span class="s-btn-arrow"><i class="fa fa-arrow-right"></i></span>
  1936.                                         </a>
  1937.                                     </div>
  1938.                                 </div>
  1939.                             {% endfor %}
  1940.                         </div>
  1941.                     </div>
  1942.                     <button class="sessions-nav-btn sessions-next" id="sessionsNext">
  1943.                         <i class="fa fa-chevron-right"></i>
  1944.                     </button>
  1945.                 </div>
  1946.             {% endif %}
  1947.         </div>
  1948.     </section>
  1949.     <!-- =====================================================
  1950.          VIDÉOS — MODERNE
  1951.          ===================================================== -->
  1952.     <!-- =====================================================
  1953.          VIDÉOS — MODERNE AVEC SCROLL HORIZONTAL
  1954.          ===================================================== -->
  1955.     <section class="videos-section">
  1956.         <div class="container" style="position:relative;z-index:1">
  1957.             <div class="sip-title-wrap navy" style="text-align:center">
  1958.                 <h2 style="color:#fff">Dernières Vidéos</h2>
  1959.                 <p style="color:rgba(255,255,255,.5)">Découvrez nos contenus pédagogiques en vidéo</p>
  1960.                 <div class="sip-rule" style="margin:16px auto 0"></div>
  1961.                 <a href="{{ setting.lienyoutube }}" class="yt-cta-link" target="_blank">
  1962.                     <i class="fa fa-youtube-play"></i> Voir toutes les vidéos sur YouTube
  1963.                 </a>
  1964.             </div>
  1965.             <!-- Conteneur avec boutons de navigation -->
  1966.             <div class="videos-slider-container">
  1967.                 <button class="videos-nav-btn videos-prev" id="videosPrev">
  1968.                     <i class="fa fa-chevron-left"></i>
  1969.                 </button>
  1970.                 <div class="videos-rail" id="videosRail">
  1971.                     <div class="videos-belt">
  1972.                         {% for v in video %}
  1973.                             <div class="videos-card">
  1974.                                 <span class="videos-card-num">0{{ loop.index }}</span>
  1975.                                 <video controls preload="metadata">
  1976.                                     <source src="{{ asset('uploads/video/' ~ v.videov) }}">
  1977.                                 </video>
  1978.                                 <div class="videos-card-body">
  1979.                                     <div class="videos-play-btn">
  1980.                                         <i class="fa fa-play"></i>
  1981.                                     </div>
  1982.                                     <h4>{{ v.titre }}</h4>
  1983.                                 </div>
  1984.                             </div>
  1985.                         {% endfor %}
  1986.                     </div>
  1987.                 </div>
  1988.                 <button class="videos-nav-btn videos-next" id="videosNext">
  1989.                     <i class="fa fa-chevron-right"></i>
  1990.                 </button>
  1991.             </div>
  1992.             <!-- Indicateurs de défilement (optionnel) -->
  1993.             <div class="videos-scroll-indicator">
  1994.                 <div class="videos-scroll-bar"></div>
  1995.             </div>
  1996.         </div>
  1997.     </section>
  1998.     <!-- FUN FACTORS — MODERNISÉS -->
  1999.     {# =====================================================
  2000.    REMPLACER tout le bloc <div class="fun-factor-area">...</div>
  2001.    par ce code
  2002.    ===================================================== #}
  2003.     <section class="stats-section">
  2004.         <div class="container">
  2005.             <div class="stats-inner">
  2006.                 <div class="stat-card stat-gold" data-bar="85">
  2007.                     <div class="stat-top">
  2008.                         <div class="stat-icon-wrap stat-icon-gold">
  2009.                             <i class="fa fa-users"></i>
  2010.                         </div>
  2011.                         <div class="stat-trend">
  2012.                             <i class="fa fa-arrow-up"></i> Actifs
  2013.                         </div>
  2014.                     </div>
  2015.                     <div class="stat-number">
  2016.                         <span class="stat-count" data-target="{{ setting.membres }}">0</span>
  2017.                         <span class="stat-plus">+</span>
  2018.                     </div>
  2019.                     <div class="stat-label">Membres</div>
  2020.                     <div class="stat-bar-wrap">
  2021.                         <div class="stat-bar stat-bar-gold"></div>
  2022.                     </div>
  2023.                 </div>
  2024.                 <div class="stat-card stat-navy" data-bar="72">
  2025.                     <div class="stat-top">
  2026.                         <div class="stat-icon-wrap stat-icon-navy">
  2027.                             <i class="fa fa-graduation-cap"></i>
  2028.                         </div>
  2029.                         <div class="stat-trend stat-trend-navy">
  2030.                             <i class="fa fa-arrow-up"></i> Certifiées
  2031.                         </div>
  2032.                     </div>
  2033.                     <div class="stat-number">
  2034.                         <span class="stat-count" data-target="{{ setting.nbrformation }}">0</span>
  2035.                         <span class="stat-plus">+</span>
  2036.                     </div>
  2037.                     <div class="stat-label">Formations</div>
  2038.                     <div class="stat-bar-wrap">
  2039.                         <div class="stat-bar stat-bar-navy"></div>
  2040.                     </div>
  2041.                 </div>
  2042.                 <div class="stat-card stat-gold" data-bar="60">
  2043.                     <div class="stat-top">
  2044.                         <div class="stat-icon-wrap stat-icon-gold">
  2045.                             <i class="fa fa-star"></i>
  2046.                         </div>
  2047.                         <div class="stat-trend">
  2048.                             <i class="fa fa-arrow-up"></i> Experts
  2049.                         </div>
  2050.                     </div>
  2051.                     <div class="stat-number">
  2052.                         <span class="stat-count" data-target="{{ setting.formateurs }}">0</span>
  2053.                         <span class="stat-plus">+</span>
  2054.                     </div>
  2055.                     <div class="stat-label">Formateurs</div>
  2056.                     <div class="stat-bar-wrap">
  2057.                         <div class="stat-bar stat-bar-gold"></div>
  2058.                     </div>
  2059.                 </div>
  2060.                 <div class="stat-card stat-navy" data-bar="45">
  2061.                     <div class="stat-top">
  2062.                         <div class="stat-icon-wrap stat-icon-navy">
  2063.                             <i class="fa fa-globe"></i>
  2064.                         </div>
  2065.                         <div class="stat-trend stat-trend-navy">
  2066.                             <i class="fa fa-arrow-up"></i> International
  2067.                         </div>
  2068.                     </div>
  2069.                     <div class="stat-number">
  2070.                         <span class="stat-count" data-target="{{ setting.pays }}">0</span>
  2071.                         <span class="stat-plus">+</span>
  2072.                     </div>
  2073.                     <div class="stat-label">Pays</div>
  2074.                     <div class="stat-bar-wrap">
  2075.                         <div class="stat-bar stat-bar-navy"></div>
  2076.                     </div>
  2077.                 </div>
  2078.             </div>
  2079.         </div>
  2080.     </section>
  2081.     {# =====================================================
  2082.    CSS À AJOUTER dans le bloc <style> de votre fichier
  2083.    ===================================================== #}
  2084.     <style>
  2085.         .stats-section {
  2086.             padding: 80px 0;
  2087.             background: linear-gradient(135deg, #f6f8fc 0%, #f0f4ff 100%);
  2088.             position: relative;
  2089.             overflow: hidden;
  2090.         }
  2091.         .stats-section::before {
  2092.             content: '';
  2093.             position: absolute;
  2094.             top: -120px; right: -120px;
  2095.             width: 400px; height: 400px;
  2096.             background: radial-gradient(circle, rgba(255,174,39,.07) 0%, transparent 70%);
  2097.             border-radius: 50%;
  2098.             pointer-events: none;
  2099.         }
  2100.         .stats-section::after {
  2101.             content: '';
  2102.             position: absolute;
  2103.             bottom: -80px; left: -80px;
  2104.             width: 300px; height: 300px;
  2105.             background: radial-gradient(circle, rgba(30,58,138,.06) 0%, transparent 70%);
  2106.             border-radius: 50%;
  2107.             pointer-events: none;
  2108.         }
  2109.         .stats-inner {
  2110.             display: grid;
  2111.             grid-template-columns: repeat(4, 1fr);
  2112.             gap: 24px;
  2113.             position: relative;
  2114.             z-index: 1;
  2115.         }
  2116.         @media (max-width: 992px) { .stats-inner { grid-template-columns: repeat(2, 1fr); } }
  2117.         @media (max-width: 576px)  { .stats-inner { grid-template-columns: 1fr 1fr; gap: 14px; } }
  2118.         .stat-card {
  2119.             background: #fff;
  2120.             border-radius: 20px;
  2121.             padding: 28px 24px 24px;
  2122.             position: relative;
  2123.             overflow: hidden;
  2124.             border: 1px solid #edf0f7;
  2125.             box-shadow: 0 2px 10px rgba(30,58,138,.06);
  2126.             transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease, border-color .3s ease;
  2127.         }
  2128.         .stat-card::before {
  2129.             content: '';
  2130.             position: absolute;
  2131.             top: 0; left: 0; right: 0;
  2132.             height: 4px;
  2133.             border-radius: 20px 20px 0 0;
  2134.         }
  2135.         .stat-gold::before { background: linear-gradient(90deg, #FFAE27, #ffd07a); }
  2136.         .stat-navy::before { background: linear-gradient(90deg, #1e3a8a, #2d52b0); }
  2137.         .stat-card:hover {
  2138.             transform: translateY(-10px);
  2139.             box-shadow: 0 24px 56px rgba(30,58,138,.16);
  2140.             border-color: rgba(255,174,39,.4);
  2141.         }
  2142.         .stat-gold:hover { border-color: rgba(255,174,39,.5); }
  2143.         .stat-navy:hover { border-color: rgba(30,58,138,.3); }
  2144.         .stat-top {
  2145.             display: flex;
  2146.             align-items: flex-start;
  2147.             justify-content: space-between;
  2148.             margin-bottom: 18px;
  2149.         }
  2150.         .stat-icon-wrap {
  2151.             width: 52px; height: 52px;
  2152.             border-radius: 14px;
  2153.             display: flex; align-items: center; justify-content: center;
  2154.             font-size: 22px;
  2155.             transition: transform .3s ease;
  2156.         }
  2157.         .stat-card:hover .stat-icon-wrap { transform: scale(1.1) rotate(-5deg); }
  2158.         .stat-icon-gold { background: #fff8e6; color: #FFAE27; }
  2159.         .stat-icon-navy { background: #e8edf8; color: #1e3a8a; }
  2160.         .stat-trend {
  2161.             font-size: 10px;
  2162.             font-weight: 700;
  2163.             letter-spacing: .8px;
  2164.             text-transform: uppercase;
  2165.             padding: 4px 10px;
  2166.             border-radius: 20px;
  2167.             display: flex;
  2168.             align-items: center;
  2169.             gap: 4px;
  2170.             background: #fff8e6;
  2171.             color: #e09500;
  2172.         }
  2173.         .stat-trend-navy {
  2174.             background: #e8edf8;
  2175.             color: #1e3a8a;
  2176.         }
  2177.         .stat-trend i { font-size: 9px; }
  2178.         .stat-number {
  2179.             line-height: 1;
  2180.             margin-bottom: 6px;
  2181.             display: flex;
  2182.             align-items: flex-start;
  2183.             gap: 2px;
  2184.         }
  2185.         .stat-count {
  2186.             font-size: 52px;
  2187.             font-weight: 800;
  2188.             color: #0f1f3d;
  2189.             line-height: 1;
  2190.             font-family: 'Plus Jakarta Sans', sans-serif;
  2191.             transition: color .3s;
  2192.         }
  2193.         .stat-gold:hover .stat-count { color: #FFAE27; }
  2194.         .stat-navy:hover .stat-count  { color: #1e3a8a; }
  2195.         .stat-plus {
  2196.             font-size: 32px;
  2197.             font-weight: 800;
  2198.             color: #FFAE27;
  2199.             margin-top: 6px;
  2200.             line-height: 1;
  2201.         }
  2202.         .stat-label {
  2203.             font-size: 13px;
  2204.             font-weight: 700;
  2205.             color: #6b7280;
  2206.             text-transform: uppercase;
  2207.             letter-spacing: 1.2px;
  2208.             margin-bottom: 16px;
  2209.         }
  2210.         .stat-bar-wrap {
  2211.             height: 4px;
  2212.             background: #edf0f7;
  2213.             border-radius: 2px;
  2214.             overflow: hidden;
  2215.         }
  2216.         .stat-bar {
  2217.             height: 100%;
  2218.             border-radius: 2px;
  2219.             width: 0;
  2220.             transition: width 1.4s cubic-bezier(.4,0,.2,1);
  2221.         }
  2222.         .stat-bar-gold { background: linear-gradient(90deg, #FFAE27, #ffd07a); }
  2223.         .stat-bar-navy { background: linear-gradient(90deg, #1e3a8a, #2d52b0); }
  2224.         /* =====================================================
  2225.    STATISTIQUES - VERSION MOBILE AMÉLIORÉE
  2226.    ===================================================== */
  2227.         /* Styles de base pour mobile */
  2228.         @media (max-width: 768px) {
  2229.             .stats-section {
  2230.                 padding: 50px 20px;
  2231.             }
  2232.             .stats-inner {
  2233.                 grid-template-columns: repeat(2, 1fr);
  2234.                 gap: 15px;
  2235.             }
  2236.             .stat-card {
  2237.                 padding: 18px 15px 18px;
  2238.                 border-radius: 16px;
  2239.             }
  2240.             /* Réduction de la taille des icônes */
  2241.             .stat-icon-wrap {
  2242.                 width: 42px;
  2243.                 height: 42px;
  2244.                 font-size: 18px;
  2245.                 border-radius: 12px;
  2246.             }
  2247.             /* Réduction de la taille des chiffres */
  2248.             .stat-count {
  2249.                 font-size: 32px;
  2250.             }
  2251.             .stat-plus {
  2252.                 font-size: 24px;
  2253.                 margin-top: 4px;
  2254.             }
  2255.             /* Réduction du label */
  2256.             .stat-label {
  2257.                 font-size: 10px;
  2258.                 letter-spacing: 0.8px;
  2259.                 margin-bottom: 12px;
  2260.             }
  2261.             /* Ajustement du trend badge */
  2262.             .stat-trend {
  2263.                 font-size: 8px;
  2264.                 padding: 3px 8px;
  2265.             }
  2266.             .stat-trend i {
  2267.                 font-size: 7px;
  2268.             }
  2269.             /* Espacement réduit */
  2270.             .stat-top {
  2271.                 margin-bottom: 12px;
  2272.             }
  2273.             .stat-number {
  2274.                 margin-bottom: 4px;
  2275.             }
  2276.         }
  2277.         /* Pour les très petits écrans (moins de 480px) */
  2278.         @media (max-width: 480px) {
  2279.             .stats-section {
  2280.                 padding: 40px 15px;
  2281.             }
  2282.             .stats-inner {
  2283.                 gap: 12px;
  2284.             }
  2285.             .stat-card {
  2286.                 padding: 14px 12px 14px;
  2287.             }
  2288.             .stat-icon-wrap {
  2289.                 width: 38px;
  2290.                 height: 38px;
  2291.                 font-size: 16px;
  2292.             }
  2293.             .stat-count {
  2294.                 font-size: 28px;
  2295.             }
  2296.             .stat-plus {
  2297.                 font-size: 20px;
  2298.                 margin-top: 3px;
  2299.             }
  2300.             .stat-label {
  2301.                 font-size: 9px;
  2302.                 margin-bottom: 10px;
  2303.             }
  2304.             .stat-trend {
  2305.                 font-size: 7px;
  2306.                 padding: 2px 6px;
  2307.             }
  2308.             .stat-bar-wrap {
  2309.                 height: 3px;
  2310.             }
  2311.         }
  2312.         /* Pour les écrans moyens (tablettes) */
  2313.         @media (min-width: 769px) and (max-width: 1024px) {
  2314.             .stats-inner {
  2315.                 gap: 20px;
  2316.             }
  2317.             .stat-card {
  2318.                 padding: 24px 20px 20px;
  2319.             }
  2320.             .stat-count {
  2321.                 font-size: 42px;
  2322.             }
  2323.             .stat-icon-wrap {
  2324.                 width: 48px;
  2325.                 height: 48px;
  2326.                 font-size: 20px;
  2327.             }
  2328.         }
  2329.         /* Version horizontale pour mobile en mode paysage */
  2330.         @media (max-width: 768px) and (orientation: landscape) {
  2331.             .stats-section {
  2332.                 padding: 40px 20px;
  2333.             }
  2334.             .stats-inner {
  2335.                 gap: 15px;
  2336.             }
  2337.             .stat-count {
  2338.                 font-size: 30px;
  2339.             }
  2340.         }
  2341.         /* Ajustements supplémentaires pour une meilleure lisibilité */
  2342.         .stat-card {
  2343.             transition: transform 0.3s ease, box-shadow 0.3s ease;
  2344.         }
  2345.         /* Supprimer l'effet hover sur mobile pour éviter les problèmes de toucher */
  2346.         @media (max-width: 768px) {
  2347.             .stat-card:hover {
  2348.                 transform: translateY(-5px);
  2349.             }
  2350.             .stat-card:active {
  2351.                 transform: translateY(-3px);
  2352.                 transition: transform 0.05s;
  2353.             }
  2354.         }
  2355.         /* Optimisation des animations sur mobile */
  2356.         @media (max-width: 768px) {
  2357.             .stat-card::before {
  2358.                 height: 3px;
  2359.             }
  2360.             .stat-bar {
  2361.                 transition: width 1s cubic-bezier(0.4, 0, 0.2, 1);
  2362.             }
  2363.         }
  2364.         /* Version compacte pour les très petits écrans */
  2365.         @media (max-width: 380px) {
  2366.             .stats-inner {
  2367.                 gap: 10px;
  2368.             }
  2369.             .stat-card {
  2370.                 padding: 12px 10px 12px;
  2371.             }
  2372.             .stat-icon-wrap {
  2373.                 width: 34px;
  2374.                 height: 34px;
  2375.                 font-size: 14px;
  2376.             }
  2377.             .stat-count {
  2378.                 font-size: 24px;
  2379.             }
  2380.             .stat-plus {
  2381.                 font-size: 18px;
  2382.                 margin-top: 2px;
  2383.             }
  2384.             .stat-label {
  2385.                 font-size: 8px;
  2386.                 margin-bottom: 8px;
  2387.             }
  2388.         }
  2389.         /* =====================================================
  2390.    VIDÉOS - SCROLL HORIZONTAL (Largeur augmentée + espace latéral)
  2391.    ===================================================== */
  2392.         /* Ajout d'espace latéral pour toute la section */
  2393.         .videos-section {
  2394.             padding: 88px 0 !important;
  2395.             position: relative;
  2396.             overflow: hidden;
  2397.         }
  2398.         /* Container avec plus d'espace sur les côtés */
  2399.         .videos-section .container {
  2400.             padding-left: 40px !important;
  2401.             padding-right: 40px !important;
  2402.             max-width: 1400px !important;
  2403.             width: 100% !important;
  2404.         }
  2405.         /* Ajustement pour mobile */
  2406.         @media (max-width: 768px) {
  2407.             .videos-section .container {
  2408.                 padding-left: 20px !important;
  2409.                 padding-right: 20px !important;
  2410.             }
  2411.         }
  2412.         .videos-slider-container {
  2413.             position: relative;
  2414.             display: flex;
  2415.             align-items: center;
  2416.             gap: 15px;
  2417.             margin-top: 40px;
  2418.             width: 100%;
  2419.         }
  2420.         /* Boutons de navigation - repositionnés légèrement */
  2421.         .videos-nav-btn {
  2422.             width: 48px;
  2423.             height: 48px;
  2424.             border-radius: 50%;
  2425.             background: rgba(255,255,255,0.15);
  2426.             backdrop-filter: blur(10px);
  2427.             border: 1.5px solid rgba(255,174,39,0.5);
  2428.             color: var(--gold);
  2429.             font-size: 20px;
  2430.             cursor: pointer;
  2431.             display: flex;
  2432.             align-items: center;
  2433.             justify-content: center;
  2434.             transition: all .3s cubic-bezier(.4,0,.2,1);
  2435.             flex-shrink: 0;
  2436.             z-index: 10;
  2437.             box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  2438.         }
  2439.         .videos-nav-btn:hover {
  2440.             background: var(--gold);
  2441.             border-color: var(--gold);
  2442.             color: var(--navy);
  2443.             transform: scale(1.1);
  2444.         }
  2445.         /* Rail de défilement - prend tout l'espace disponible */
  2446.         .videos-rail {
  2447.             flex: 1;
  2448.             overflow-x: auto;
  2449.             scroll-behavior: smooth;
  2450.             scrollbar-width: none;
  2451.             -ms-overflow-style: none;
  2452.             cursor: grab;
  2453.             border-radius: var(--r-lg);
  2454.             width: 100%;
  2455.         }
  2456.         .videos-rail::-webkit-scrollbar {
  2457.             display: none;
  2458.         }
  2459.         .videos-rail:active {
  2460.             cursor: grabbing;
  2461.         }
  2462.         /* Belt des vidéos */
  2463.         .videos-belt {
  2464.             display: flex;
  2465.             gap: 25px;
  2466.             width: max-content;
  2467.             padding: 10px 5px;
  2468.         }
  2469.         /* ===== CARTE VIDÉO - LARGEUR AUGMENTÉE ===== */
  2470.         .videos-card {
  2471.             width: 300px;  /* Augmenté de 260px à 300px */
  2472.             flex-shrink: 0;
  2473.             background: rgba(255,255,255,.1);
  2474.             border: 1.5px solid rgba(255,255,255,.15);
  2475.             border-radius: var(--r-lg);
  2476.             overflow: hidden;
  2477.             transition: all .3s cubic-bezier(.4,0,.2,1);
  2478.             position: relative;
  2479.             backdrop-filter: blur(2px);
  2480.         }
  2481.         .videos-card:hover {
  2482.             transform: translateY(-10px);
  2483.             border-color: var(--gold);
  2484.             box-shadow: 0 25px 50px rgba(0,0,0,.4);
  2485.             background: rgba(255,255,255,.12);
  2486.         }
  2487.         /* VIDÉO - hauteur ajustée proportionnellement */
  2488.         .videos-card video {
  2489.             width: 100%;
  2490.             height: 185px;  /* Augmenté de 160px à 185px */
  2491.             object-fit: cover;
  2492.             display: block;
  2493.             background: #000;
  2494.         }
  2495.         .videos-card-body {
  2496.             padding: 16px 18px 20px;
  2497.             display: flex;
  2498.             align-items: flex-start;
  2499.             gap: 14px;
  2500.         }
  2501.         .videos-play-btn {
  2502.             width: 40px;
  2503.             height: 40px;
  2504.             border-radius: 50%;
  2505.             background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  2506.             display: flex;
  2507.             align-items: center;
  2508.             justify-content: center;
  2509.             flex-shrink: 0;
  2510.             box-shadow: 0 6px 16px rgba(255,174,39,.35);
  2511.             transition: transform .3s;
  2512.             cursor: pointer;
  2513.         }
  2514.         .videos-card:hover .videos-play-btn {
  2515.             transform: scale(1.1);
  2516.         }
  2517.         .videos-play-btn i {
  2518.             color: #fff;
  2519.             font-size: 12px;
  2520.             margin-left: 2px;
  2521.         }
  2522.         .videos-card-body h4 {
  2523.             font-family: 'Plus Jakarta Sans', sans-serif;
  2524.             font-size: 14px;
  2525.             font-weight: 700;
  2526.             color: rgba(255,255,255,.95);
  2527.             margin: 0;
  2528.             line-height: 1.4;
  2529.             display: -webkit-box;
  2530.             -webkit-line-clamp: 2;
  2531.             -webkit-box-orient: vertical;
  2532.             overflow: hidden;
  2533.         }
  2534.         .videos-card-num {
  2535.             position: absolute;
  2536.             top: 12px;
  2537.             right: 12px;
  2538.             background: rgba(0,0,0,.75);
  2539.             backdrop-filter: blur(4px);
  2540.             color: var(--gold);
  2541.             font-size: 11px;
  2542.             font-weight: 700;
  2543.             padding: 4px 10px;
  2544.             border-radius: 20px;
  2545.             border: 1px solid rgba(255,174,39,.4);
  2546.             z-index: 2;
  2547.         }
  2548.         /* Indicateur de défilement */
  2549.         .videos-scroll-indicator {
  2550.             margin-top: 30px;
  2551.             display: flex;
  2552.             justify-content: center;
  2553.         }
  2554.         .videos-scroll-bar {
  2555.             width: 60px;
  2556.             height: 3px;
  2557.             background: rgba(255,255,255,0.25);
  2558.             border-radius: 3px;
  2559.             position: relative;
  2560.             transition: width .3s;
  2561.         }
  2562.         /* ===== RESPONSIVE ===== */
  2563.         /* Tablette */
  2564.         @media (max-width: 992px) {
  2565.             .videos-section .container {
  2566.                 padding-left: 30px !important;
  2567.                 padding-right: 30px !important;
  2568.             }
  2569.             .videos-card {
  2570.                 width: 280px;
  2571.             }
  2572.             .videos-card video {
  2573.                 height: 170px;
  2574.             }
  2575.             .videos-belt {
  2576.                 gap: 20px;
  2577.             }
  2578.         }
  2579.         /* Mobile large */
  2580.         @media (max-width: 768px) {
  2581.             .videos-section .container {
  2582.                 padding-left: 15px !important;
  2583.                 padding-right: 15px !important;
  2584.             }
  2585.             .videos-nav-btn {
  2586.                 width: 40px;
  2587.                 height: 40px;
  2588.                 font-size: 16px;
  2589.             }
  2590.             .videos-slider-container {
  2591.                 gap: 10px;
  2592.             }
  2593.             .videos-card {
  2594.                 width: 260px;
  2595.             }
  2596.             .videos-card video {
  2597.                 height: 155px;
  2598.             }
  2599.             .videos-card-body {
  2600.                 padding: 14px 15px 16px;
  2601.                 gap: 12px;
  2602.             }
  2603.             .videos-play-btn {
  2604.                 width: 36px;
  2605.                 height: 36px;
  2606.             }
  2607.             .videos-play-btn i {
  2608.                 font-size: 11px;
  2609.             }
  2610.             .videos-card-body h4 {
  2611.                 font-size: 13px;
  2612.             }
  2613.             .videos-card-num {
  2614.                 font-size: 10px;
  2615.                 padding: 3px 8px;
  2616.                 top: 10px;
  2617.                 right: 10px;
  2618.             }
  2619.             .videos-belt {
  2620.                 gap: 18px;
  2621.             }
  2622.         }
  2623.         /* Mobile standard */
  2624.         @media (max-width: 576px) {
  2625.             .videos-section .container {
  2626.                 padding-left: 12px !important;
  2627.                 padding-right: 12px !important;
  2628.             }
  2629.             .videos-nav-btn {
  2630.                 width: 36px;
  2631.                 height: 36px;
  2632.                 font-size: 14px;
  2633.             }
  2634.             .videos-card {
  2635.                 width: 240px;
  2636.             }
  2637.             .videos-card video {
  2638.                 height: 140px;
  2639.             }
  2640.             .videos-card-body {
  2641.                 padding: 12px 12px 14px;
  2642.                 gap: 10px;
  2643.             }
  2644.             .videos-play-btn {
  2645.                 width: 32px;
  2646.                 height: 32px;
  2647.             }
  2648.             .videos-play-btn i {
  2649.                 font-size: 10px;
  2650.             }
  2651.             .videos-card-body h4 {
  2652.                 font-size: 12px;
  2653.             }
  2654.             .videos-belt {
  2655.                 gap: 15px;
  2656.             }
  2657.         }
  2658.         /* Petit mobile */
  2659.         @media (max-width: 480px) {
  2660.             .videos-section .container {
  2661.                 padding-left: 10px !important;
  2662.                 padding-right: 10px !important;
  2663.             }
  2664.             .videos-nav-btn {
  2665.                 width: 32px;
  2666.                 height: 32px;
  2667.                 font-size: 12px;
  2668.             }
  2669.             .videos-slider-container {
  2670.                 gap: 8px;
  2671.             }
  2672.             .videos-card {
  2673.                 width: 220px;
  2674.             }
  2675.             .videos-card video {
  2676.                 height: 130px;
  2677.             }
  2678.             .videos-card-body h4 {
  2679.                 font-size: 11px;
  2680.             }
  2681.         }
  2682.         /* Version paysage sur mobile */
  2683.         @media (max-width: 768px) and (orientation: landscape) {
  2684.             .videos-section .container {
  2685.                 padding-left: 20px !important;
  2686.                 padding-right: 20px !important;
  2687.             }
  2688.             .videos-card {
  2689.                 width: 250px;
  2690.             }
  2691.             .videos-card video {
  2692.                 height: 145px;
  2693.             }
  2694.         }
  2695.         /* Grand écran (>= 1400px) */
  2696.         @media (min-width: 1400px) {
  2697.             .videos-section .container {
  2698.                 padding-left: 60px !important;
  2699.                 padding-right: 60px !important;
  2700.                 max-width: 1600px !important;
  2701.             }
  2702.             .videos-card {
  2703.                 width: 320px;
  2704.             }
  2705.             .videos-card video {
  2706.                 height: 200px;
  2707.             }
  2708.             .videos-belt {
  2709.                 gap: 30px;
  2710.             }
  2711.         }
  2712.         /* =====================================================
  2713.    SESSIONS - VERSION MOBILE CORRIGÉE
  2714.    ===================================================== */
  2715.         @media (max-width: 768px) {
  2716.             /* Section */
  2717.             .sessions-section {
  2718.                 padding: 40px 0;
  2719.                 overflow-x: hidden;
  2720.             }
  2721.             /* Container principal - largeur complète */
  2722.             .sessions-slider-container {
  2723.                 display: flex;
  2724.                 align-items: center;
  2725.                 gap: 5px;
  2726.                 margin-top: 20px;
  2727.                 padding: 0 5px;
  2728.                 width: 100%;
  2729.             }
  2730.             /* Boutons de navigation - compacts */
  2731.             .sessions-nav-btn {
  2732.                 width: 32px !important;
  2733.                 height: 32px !important;
  2734.                 font-size: 12px !important;
  2735.                 flex-shrink: 0;
  2736.                 background: white;
  2737.                 box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  2738.                 margin: 0 !important;
  2739.                 position: relative;
  2740.                 left: auto !important;
  2741.                 right: auto !important;
  2742.                 transform: none !important;
  2743.             }
  2744.             /* Rail de défilement */
  2745.             .sessions-rail {
  2746.                 flex: 1;
  2747.                 overflow-x: auto;
  2748.                 -webkit-overflow-scrolling: touch;
  2749.                 scroll-snap-type: x mandatory;
  2750.                 cursor: grab;
  2751.             }
  2752.             /* Belt des cartes */
  2753.             .sessions-belt {
  2754.                 display: flex;
  2755.                 gap: 12px;
  2756.                 padding: 5px;
  2757.                 width: max-content;
  2758.             }
  2759.             /* CARTE - Taille minimisée pour être complètement visible */
  2760.             .sessions-card {
  2761.                 width: 260px !important;
  2762.                 flex-shrink: 0;
  2763.                 scroll-snap-align: start;
  2764.                 background: white;
  2765.                 border-radius: 16px;
  2766.                 overflow: hidden;
  2767.                 box-shadow: 0 4px 12px rgba(0,0,0,0.08);
  2768.             }
  2769.             /* Image - hauteur réduite */
  2770.             .s-card-img {
  2771.                 height: 140px !important;
  2772.             }
  2773.             .s-card-img img {
  2774.                 width: 100%;
  2775.                 height: 100%;
  2776.                 object-fit: cover;
  2777.             }
  2778.             /* Corps de la carte - padding réduit */
  2779.             .s-card-body {
  2780.                 padding: 10px !important;
  2781.             }
  2782.             /* Titre */
  2783.             .s-card-body h3 {
  2784.                 font-size: 13px !important;
  2785.                 margin-bottom: 6px !important;
  2786.                 line-height: 1.3;
  2787.                 min-height: auto;
  2788.             }
  2789.             /* Chip date/heure */
  2790.             .s-time-chip {
  2791.                 font-size: 9px !important;
  2792.                 padding: 4px 8px !important;
  2793.                 margin-bottom: 8px !important;
  2794.                 gap: 4px;
  2795.             }
  2796.             .s-time-chip i {
  2797.                 font-size: 8px !important;
  2798.             }
  2799.             /* Description - limitée à 2 lignes */
  2800.             .s-desc {
  2801.                 font-size: 10px !important;
  2802.                 line-height: 1.4 !important;
  2803.                 margin-bottom: 8px !important;
  2804.                 -webkit-line-clamp: 2;
  2805.             }
  2806.             /* Bouton */
  2807.             .s-btn {
  2808.                 font-size: 10px !important;
  2809.                 padding: 5px 10px !important;
  2810.                 gap: 4px;
  2811.             }
  2812.             .s-btn-arrow {
  2813.                 width: 14px;
  2814.                 height: 14px;
  2815.             }
  2816.             .s-btn-arrow i {
  2817.                 font-size: 7px;
  2818.             }
  2819.             /* Message vide */
  2820.             .no-sessions-message {
  2821.                 padding: 25px 15px;
  2822.                 margin: 0 10px;
  2823.             }
  2824.             .no-sessions-icon {
  2825.                 font-size: 36px;
  2826.             }
  2827.             .no-sessions-message h3 {
  2828.                 font-size: 16px;
  2829.             }
  2830.             .no-sessions-message p {
  2831.                 font-size: 11px;
  2832.             }
  2833.         }
  2834.         /* Très petits mobiles (480px et moins) */
  2835.         @media (max-width: 480px) {
  2836.             .sessions-card {
  2837.                 width: 240px !important;
  2838.             }
  2839.             .s-card-img {
  2840.                 height: 130px !important;
  2841.             }
  2842.             .s-card-body h3 {
  2843.                 font-size: 12px !important;
  2844.             }
  2845.             .s-time-chip {
  2846.                 font-size: 8px !important;
  2847.                 padding: 3px 6px !important;
  2848.             }
  2849.             .s-desc {
  2850.                 font-size: 9px !important;
  2851.                 -webkit-line-clamp: 2;
  2852.             }
  2853.             .s-btn {
  2854.                 font-size: 9px !important;
  2855.                 padding: 4px 8px !important;
  2856.             }
  2857.             .sessions-nav-btn {
  2858.                 width: 28px !important;
  2859.                 height: 28px !important;
  2860.                 font-size: 10px !important;
  2861.             }
  2862.             .sessions-belt {
  2863.                 gap: 8px;
  2864.             }
  2865.         }
  2866.         /* Mobiles très étroits (moins de 380px) */
  2867.         @media (max-width: 380px) {
  2868.             .sessions-card {
  2869.                 width: 220px !important;
  2870.             }
  2871.             .s-card-img {
  2872.                 height: 120px !important;
  2873.             }
  2874.             .s-card-body h3 {
  2875.                 font-size: 11px !important;
  2876.             }
  2877.         }
  2878.         /* Version paysage mobile */
  2879.         @media (max-width: 768px) and (orientation: landscape) {
  2880.             .sessions-card {
  2881.                 width: 240px !important;
  2882.             }
  2883.             .s-card-img {
  2884.                 height: 130px !important;
  2885.             }
  2886.             .sessions-belt {
  2887.                 gap: 10px;
  2888.             }
  2889.         }
  2890.         /* Suppression des effets hover sur mobile */
  2891.         @media (hover: none) and (pointer: coarse) {
  2892.             .sessions-card:hover {
  2893.                 transform: none !important;
  2894.             }
  2895.             .s-card:hover {
  2896.                 transform: none !important;
  2897.             }
  2898.             .sessions-nav-btn:hover {
  2899.                 transform: scale(1.05) !important;
  2900.             }
  2901.         }
  2902.     </style>
  2903.     {# =====================================================
  2904.    JS À AJOUTER juste avant </script> de fermeture
  2905.    (ou dans le bloc script existant en bas du fichier)
  2906.    ===================================================== #}
  2907.     <script>
  2908.         (function(){
  2909.             function animateCount(el, target, dur){
  2910.                 var start = 0;
  2911.                 var steps = Math.ceil(dur / 16);
  2912.                 var inc = target / steps;
  2913.                 var t = setInterval(function(){
  2914.                     start = Math.min(start + inc, target);
  2915.                     el.textContent = Math.round(start).toLocaleString();
  2916.                     if(start >= target) clearInterval(t);
  2917.                 }, 16);
  2918.             }
  2919.             var section = document.querySelector('.stats-section');
  2920.             if(!section) return;
  2921.             var triggered = false;
  2922.             function runStats(){
  2923.                 if(triggered) return;
  2924.                 triggered = true;
  2925.                 document.querySelectorAll('.stat-card').forEach(function(card){
  2926.                     var barPct = parseInt(card.dataset.bar) || 0;
  2927.                     var counter = card.querySelector('.stat-count');
  2928.                     var bar = card.querySelector('.stat-bar');
  2929.                     var target = parseInt(counter ? counter.dataset.target : 0) || 0;
  2930.                     if(counter) animateCount(counter, target, 1500);
  2931.                     if(bar) setTimeout(function(){ bar.style.width = barPct + '%'; }, 150);
  2932.                 });
  2933.             }
  2934.             if('IntersectionObserver' in window){
  2935.                 new IntersectionObserver(function(entries){
  2936.                     if(entries[0].isIntersecting) runStats();
  2937.                 }, { threshold: 0.25 }).observe(section);
  2938.             } else {
  2939.                 runStats();
  2940.             }
  2941.         })();
  2942.     </script>
  2943.     <!-- =====================================================
  2944.          TÉMOIGNAGES — REDESIGNED (Cards blanches)
  2945.          ===================================================== -->
  2946.     <section class="testi-section">
  2947.         <div class="container" style="position:relative;z-index:1">
  2948.             <div class="sip-title-wrap navy" style="text-align:center">
  2949.                 <span class="sip-eyebrow sip-eyebrow-navy"><i class="fa fa-heart" style="font-size:11px"></i>Témoignages</span>
  2950.                 <h2 style="color:#fff">Ce que disent nos apprenants</h2>
  2951.                 <p style="color:rgba(255,255,255,.5)">Plus de {{ setting.membres }}+ apprenants nous font confiance</p>
  2952.                 <div class="sip-rule" style="margin:16px auto 0"></div>
  2953.             </div>
  2954.             <div class="testi-outer">
  2955.                 <div class="testi-track" id="testiTrack">
  2956.                     {% for temoii in temoi %}
  2957.                         <div class="testi-slide">
  2958.                             <div class="testi-card">
  2959.                                 {# Header avec avatar et infos #}
  2960.                                 <div class="testi-header">
  2961.                                     <img class="testi-avatar" src="{{ asset('uploads/temoignage/' ~ temoii.image) }}" alt="{{ temoii.prenom }}">
  2962.                                     <div class="testi-meta">
  2963.                                         <p class="testi-name">{{ temoii.prenom }} {{ temoii.nom }}</p>
  2964.                                         <p class="testi-role">{{ temoii.poste }}</p>
  2965.                                     </div>
  2966.                                 </div>
  2967.                                 {# Contenu testimonial #}
  2968.                                 <div class="testi-content">
  2969.                                     <span class="testi-quote-mark">"</span>
  2970.                                     <div class="testi-stars">
  2971.                                         <i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i>
  2972.                                     </div>
  2973.                                     <p class="testi-text">{{ temoii.description }}</p>
  2974.                                 </div>
  2975.                             </div>
  2976.                         </div>
  2977.                     {% endfor %}
  2978.                 </div>
  2979.             </div>
  2980.             <div class="testi-controls">
  2981.                 <button class="testi-arrow" id="testiPrev">&#8592;</button>
  2982.                 <div class="testi-dots" id="testiDots"></div>
  2983.                 <button class="testi-arrow" id="testiNext">&#8594;</button>
  2984.             </div>
  2985.         </div>
  2986.     </section>
  2987.     <!-- =====================================================
  2988.          ACTUALITÉS — MODERNE
  2989.          ===================================================== -->
  2990.     <section class="actu-section">
  2991.         <div class="container">
  2992.             <div class="actu-header">
  2993.                 <div class="sip-title-wrap left" style="margin-bottom:0">
  2994.                     <div id="actualites"></div>
  2995.                     <span class="sip-eyebrow"><i class="fa fa-newspaper-o" style="font-size:11px"></i>Blog</span>
  2996.                     <h2>Dernières Actualités</h2>
  2997.                     <div class="sip-rule"></div>
  2998.                 </div>
  2999.                 <div class="actu-arrows">
  3000.                     <button class="actu-arr" id="actuPrev">&#8592;</button>
  3001.                     <button class="actu-arr" id="actuNext">&#8594;</button>
  3002.                 </div>
  3003.             </div>
  3004.             <div class="actu-rail" id="actuRail">
  3005.                 <div class="actu-belt">
  3006.                     {% for actualite in actualites %}
  3007.                         <div class="a-card">
  3008.                             <div class="a-card-img">
  3009.                                 <a href="{{ path('app_details_actualite',{'slug':actualite.slug}) }}">
  3010.                                     <img src="{{ asset('uploads/actualite/'~ actualite.image) }}" alt="{{ actualite.titre }}">
  3011.                                 </a>
  3012.                             </div>
  3013.                             <div class="a-card-body">
  3014.                                 <div class="a-meta">
  3015.                                     <span><i class="fa fa-calendar-o"></i>{{ actualite.date|date('d M Y') }}</span>
  3016.                                     <span><i class="fa fa-eye"></i>{{ actualite.nbvue }}</span>
  3017.                                     <span><i class="fa fa-comment-o"></i>{{ actualite.nbcommentaire }}</span>
  3018.                                 </div>
  3019.                                 <h3><a href="{{ path('app_details_actualite',{'slug':actualite.slug}) }}">{{ actualite.titre }}</a></h3>
  3020.                                 <p class="a-excerpt">
  3021.                                     {{ actualite.desccourt|striptags|slice(0, 200)|raw }}
  3022.                                     {% if actualite.desccourt|striptags|length > 200 %}...{% endif %}
  3023.                                 </p>
  3024.                                 <a href="{{ path('app_details_actualite',{'slug':actualite.slug}) }}" class="a-read">
  3025.                                     Lire la suite
  3026.                                     <span class="a-read-icon"><i class="fa fa-arrow-right"></i></span>
  3027.                                 </a>
  3028.                             </div>
  3029.                         </div>
  3030.                     {% endfor %}
  3031.                 </div>
  3032.             </div>
  3033.         </div>
  3034.     </section>
  3035.     <!-- =====================================================
  3036.          ABONNEMENTS — IMAGE AGRANDIE, SANS BADGE OFFRE LIMITÉE
  3037.          ===================================================== -->
  3038.     <div class="event-area">
  3039.         <div class="container">
  3040.             <div class="row">
  3041.                 <div class="col-md-12">
  3042.                     <div class="section-title-wrapper">
  3043.                         <div class="section-title">
  3044.                             <h3>NOS ABONNEMENTS</h3>
  3045.                             <p>Choisissez le plan qui vous convient et accédez à des formations de qualité professionnelle</p>
  3046.                         </div>
  3047.                     </div>
  3048.                 </div>
  3049.             </div>
  3050.             <div class="row">
  3051.                 {% for evenement in off %}
  3052.                     <div class="col-lg-4 col-md-6 mb-4">
  3053.                         <div class="single-event-item">
  3054.                             <div class="single-event-image">
  3055.                                 <a href="{{ path('app_details_offres',{'slug':evenement.slug}) }}">
  3056.                                     <img src="{{ asset('uploads/affiche/'~ evenement.affiche) }}" alt="{{ evenement.titre }}">
  3057.                                 </a>
  3058.                                 {# UNIQUEMENT le badge prix (pas d'offre limitée) #}
  3059.                             </div>
  3060.                             <div class="single-event-text">
  3061.                                 <h3>{{ evenement.titre }}</h3>
  3062.                                 <div class="price-text">{{ evenement.prix }} DT</div>
  3063.                                 <ul class="features-list">
  3064.                                     {% for tt in evenement.formation %}
  3065.                                         <li>
  3066.                                             <i class="fa fa-check-circle"></i>
  3067.                                             <span>Promo {{ tt.titre }}</span>
  3068.                                         </li>
  3069.                                     {% endfor %}
  3070.                                     {% if evenement.option5 %}
  3071.                                         <li>
  3072.                                             <i class="fa fa-check-circle"></i>
  3073.                                             <span>{{ evenement.option5 }}</span>
  3074.                                         </li>
  3075.                                     {% endif %}
  3076.                                     {% if evenement.option4 %}
  3077.                                         <li>
  3078.                                             <i class="fa fa-check-circle"></i>
  3079.                                             <span>{{ evenement.option4 }}</span>
  3080.                                         </li>
  3081.                                     {% endif %}
  3082.                                 </ul>
  3083.                                 <div class="duration-badge">
  3084.                                     <i class="fa fa-clock-o"></i>
  3085.                                     <span>Durée: {{ evenement.duree }}</span>
  3086.                                 </div>
  3087.                                 <a class="button-default" href="{{ path('app_details_offres',{'slug':evenement.slug}) }}">
  3088.                                     Découvrir l'offre
  3089.                                     <i class="fa fa-arrow-right"></i>
  3090.                                 </a>
  3091.                             </div>
  3092.                         </div>
  3093.                     </div>
  3094.                 {% endfor %}
  3095.             </div>
  3096.         </div>
  3097.     </div>
  3098.     <script>
  3099.         function fireSweetAlert(){ Swal.fire({icon:'success',title:'Vous désormais inscrit au newsletters',showConfirmButton:false,timer:2800}) }
  3100.         function fireSweetAlert2(){ Swal.fire({icon:'success',title:'Vous êtes déjà inscrit',showConfirmButton:false,timer:2800}) }
  3101.         function fireSweetAlert3(){ Swal.fire({icon:'success',title:'Vous devez entrez votre email',showConfirmButton:false,timer:2800}) }
  3102.         function addNewsletter(){
  3103.             var email=document.getElementById("email").value;
  3104.             if(email!==""){
  3105.                 $.ajax({type:"POST",url:"{{ path('app_newsletter_new_ajax') }}",data:{email:email},
  3106.                     success:function(data){ if(data===1){fireSweetAlert();}else{fireSweetAlert2();} }
  3107.                 });
  3108.             }else{fireSweetAlert3();}
  3109.         }
  3110.         /* panier fix */
  3111.         document.querySelector('.search-menu a').addEventListener('click',function(e){
  3112.             e.preventDefault();
  3113.             window.location.href="{{ path('panier_voir') }}";
  3114.         });
  3115.         /* ============================================
  3116.            TESTIMONIALS — auto-play, 2 par vue
  3117.            ============================================ */
  3118.         (function(){
  3119.             var track=document.getElementById('testiTrack');
  3120.             var dotsW=document.getElementById('testiDots');
  3121.             if(!track) return;
  3122.             var slides=track.querySelectorAll('.testi-slide');
  3123.             var total=slides.length;
  3124.             var perView=window.innerWidth<=768?1:2;
  3125.             var current=0;
  3126.             var timer;
  3127.             function maxIdx(){ return Math.max(0,total-perView); }
  3128.             /* build dots */
  3129.             function buildDots(){
  3130.                 dotsW.innerHTML='';
  3131.                 for(var i=0;i<=maxIdx();i++){
  3132.                     var d=document.createElement('span');
  3133.                     d.className='testi-dot'+(i===0?' active':'');
  3134.                     (function(idx){ d.addEventListener('click',function(){goTo(idx);resetTimer();}); })(i);
  3135.                     dotsW.appendChild(d);
  3136.                 }
  3137.             }
  3138.             buildDots();
  3139.             function updateDots(){
  3140.                 dotsW.querySelectorAll('.testi-dot').forEach(function(d,i){
  3141.                     d.classList.toggle('active',i===current);
  3142.                 });
  3143.             }
  3144.             function goTo(idx){
  3145.                 current=Math.max(0,Math.min(idx,maxIdx()));
  3146.                 track.style.transform='translateX(-'+(current*(100/perView))+'%)';
  3147.                 updateDots();
  3148.             }
  3149.             function next(){ goTo(current>=maxIdx()?0:current+1); }
  3150.             function prev(){ goTo(current<=0?maxIdx():current-1); }
  3151.             document.getElementById('testiNext').addEventListener('click',function(){next();resetTimer();});
  3152.             document.getElementById('testiPrev').addEventListener('click',function(){prev();resetTimer();});
  3153.             function startTimer(){ timer=setInterval(next,4500); }
  3154.             function resetTimer(){ clearInterval(timer);startTimer(); }
  3155.             startTimer();
  3156.             window.addEventListener('resize',function(){
  3157.                 perView=window.innerWidth<=768?1:2;
  3158.                 current=0; buildDots(); goTo(0);
  3159.             });
  3160.         })();
  3161.         /* ============================================
  3162.            ACTUALITÉS — scroll + drag
  3163.            ============================================ */
  3164.         (function(){
  3165.             var rail=document.getElementById('actuRail');
  3166.             if(!rail) return;
  3167.             var STEP=398;
  3168.             document.getElementById('actuNext').addEventListener('click',function(){ rail.scrollBy({left:STEP,behavior:'smooth'}); });
  3169.             document.getElementById('actuPrev').addEventListener('click',function(){ rail.scrollBy({left:-STEP,behavior:'smooth'}); });
  3170.             /* drag */
  3171.             var down=false,sx,sl;
  3172.             rail.addEventListener('mousedown',function(e){ down=true; sx=e.pageX-rail.offsetLeft; sl=rail.scrollLeft; });
  3173.             rail.addEventListener('mouseleave',function(){ down=false; });
  3174.             rail.addEventListener('mouseup',function(){ down=false; });
  3175.             rail.addEventListener('mousemove',function(e){
  3176.                 if(!down) return; e.preventDefault();
  3177.                 rail.scrollLeft=sl-(e.pageX-rail.offsetLeft-sx);
  3178.             });
  3179.         })();
  3180.     </script>
  3181.     <script async src="https://www.googletagmanager.com/gtag/js?id=G-9C4DLY6W7X"></script>
  3182.     <script>
  3183.         window.dataLayer=window.dataLayer||[];
  3184.         function gtag(){dataLayer.push(arguments);}
  3185.         gtag('js',new Date());
  3186.         gtag('config','G-9C4DLY6W7X');
  3187.     </script>
  3188.     <script>
  3189.         /* ============================================
  3190.            VIDÉOS - SCROLL HORIZONTAL AVEC CALCUL AUTO
  3191.            ============================================ */
  3192.         (function(){
  3193.             var rail = document.getElementById('videosRail');
  3194.             if(!rail) return;
  3195.             var nextBtn = document.getElementById('videosNext');
  3196.             var prevBtn = document.getElementById('videosPrev');
  3197.             // Fonction pour calculer la largeur de défilement dynamique
  3198.             function getScrollAmount() {
  3199.                 var firstCard = document.querySelector('.videos-card');
  3200.                 var railElement = document.getElementById('videosRail');
  3201.                 if(firstCard && railElement) {
  3202.                     var cardWidth = firstCard.offsetWidth;
  3203.                     // Récupérer le gap depuis le style computed
  3204.                     var belt = document.querySelector('.videos-belt');
  3205.                     var gap = belt ? parseInt(getComputedStyle(belt).gap) || 25 : 25;
  3206.                     return cardWidth + gap;
  3207.                 }
  3208.                 return 325; // valeur par défaut (300px + 25px gap)
  3209.             }
  3210.             // Fonction pour faire défiler
  3211.             function scrollLeft() {
  3212.                 var amount = getScrollAmount();
  3213.                 rail.scrollBy({
  3214.                     left: -amount,
  3215.                     behavior: 'smooth'
  3216.                 });
  3217.                 setTimeout(updateScrollIndicator, 300);
  3218.                 setTimeout(checkButtonsVisibility, 350);
  3219.             }
  3220.             function scrollRight() {
  3221.                 var amount = getScrollAmount();
  3222.                 rail.scrollBy({
  3223.                     left: amount,
  3224.                     behavior: 'smooth'
  3225.                 });
  3226.                 setTimeout(updateScrollIndicator, 300);
  3227.                 setTimeout(checkButtonsVisibility, 350);
  3228.             }
  3229.             // Mettre à jour l'indicateur de défilement
  3230.             function updateScrollIndicator() {
  3231.                 var scrollBar = document.querySelector('.videos-scroll-bar');
  3232.                 if(!scrollBar) return;
  3233.                 var maxScroll = rail.scrollWidth - rail.clientWidth;
  3234.                 var currentScroll = rail.scrollLeft;
  3235.                 if(maxScroll > 0) {
  3236.                     var percentage = (currentScroll / maxScroll) * 100;
  3237.                     var barWidth = (percentage * 0.6);
  3238.                     scrollBar.style.width = Math.max(20, Math.min(60, barWidth)) + 'px';
  3239.                 } else {
  3240.                     scrollBar.style.width = '60px';
  3241.                 }
  3242.             }
  3243.             // Vérifier et cacher/afficher les boutons si nécessaire
  3244.             function checkButtonsVisibility() {
  3245.                 if(!nextBtn || !prevBtn) return;
  3246.                 var maxScroll = rail.scrollWidth - rail.clientWidth;
  3247.                 var currentScroll = rail.scrollLeft;
  3248.                 // Désactiver bouton gauche si au début
  3249.                 if(currentScroll <= 10) {
  3250.                     prevBtn.style.opacity = '0.4';
  3251.                     prevBtn.style.cursor = 'not-allowed';
  3252.                     prevBtn.disabled = true;
  3253.                 } else {
  3254.                     prevBtn.style.opacity = '1';
  3255.                     prevBtn.style.cursor = 'pointer';
  3256.                     prevBtn.disabled = false;
  3257.                 }
  3258.                 // Désactiver bouton droit si à la fin
  3259.                 if(currentScroll >= maxScroll - 10) {
  3260.                     nextBtn.style.opacity = '0.4';
  3261.                     nextBtn.style.cursor = 'not-allowed';
  3262.                     nextBtn.disabled = true;
  3263.                 } else {
  3264.                     nextBtn.style.opacity = '1';
  3265.                     nextBtn.style.cursor = 'pointer';
  3266.                     nextBtn.disabled = false;
  3267.                 }
  3268.             }
  3269.             // Boutons click
  3270.             if(nextBtn) {
  3271.                 nextBtn.addEventListener('click', function() {
  3272.                     if(!nextBtn.disabled) {
  3273.                         scrollRight();
  3274.                     }
  3275.                 });
  3276.             }
  3277.             if(prevBtn) {
  3278.                 prevBtn.addEventListener('click', function() {
  3279.                     if(!prevBtn.disabled) {
  3280.                         scrollLeft();
  3281.                     }
  3282.                 });
  3283.             }
  3284.             // DRAG TO SCROLL
  3285.             var isDown = false;
  3286.             var startX;
  3287.             var scrollLeftPos;
  3288.             rail.addEventListener('mousedown', function(e) {
  3289.                 isDown = true;
  3290.                 rail.style.cursor = 'grabbing';
  3291.                 startX = e.pageX - rail.offsetLeft;
  3292.                 scrollLeftPos = rail.scrollLeft;
  3293.                 e.preventDefault();
  3294.             });
  3295.             rail.addEventListener('mouseleave', function() {
  3296.                 isDown = false;
  3297.                 rail.style.cursor = 'grab';
  3298.                 setTimeout(checkButtonsVisibility, 100);
  3299.             });
  3300.             rail.addEventListener('mouseup', function() {
  3301.                 isDown = false;
  3302.                 rail.style.cursor = 'grab';
  3303.                 setTimeout(checkButtonsVisibility, 100);
  3304.             });
  3305.             rail.addEventListener('mousemove', function(e) {
  3306.                 if(!isDown) return;
  3307.                 e.preventDefault();
  3308.                 var x = e.pageX - rail.offsetLeft;
  3309.                 var walk = (x - startX) * 1.5;
  3310.                 rail.scrollLeft = scrollLeftPos - walk;
  3311.                 updateScrollIndicator();
  3312.                 checkButtonsVisibility();
  3313.             });
  3314.             // Écouter l'événement scroll
  3315.             rail.addEventListener('scroll', function() {
  3316.                 updateScrollIndicator();
  3317.                 checkButtonsVisibility();
  3318.             });
  3319.             // Recalculer au redimensionnement
  3320.             window.addEventListener('resize', function() {
  3321.                 setTimeout(function() {
  3322.                     updateScrollIndicator();
  3323.                     checkButtonsVisibility();
  3324.                 }, 200);
  3325.             });
  3326.             // Initialisation
  3327.             setTimeout(function() {
  3328.                 updateScrollIndicator();
  3329.                 checkButtonsVisibility();
  3330.             }, 500);
  3331.             // Touches clavier
  3332.             document.addEventListener('keydown', function(e) {
  3333.                 var videosSection = document.querySelector('.videos-section');
  3334.                 if(videosSection && (videosSection.contains(document.activeElement) || document.activeElement === document.body)) {
  3335.                     if(e.key === 'ArrowLeft') {
  3336.                         if(prevBtn && !prevBtn.disabled) scrollLeft();
  3337.                         e.preventDefault();
  3338.                     } else if(e.key === 'ArrowRight') {
  3339.                         if(nextBtn && !nextBtn.disabled) scrollRight();
  3340.                         e.preventDefault();
  3341.                     }
  3342.                 }
  3343.             });
  3344.         })();
  3345.     </script>
  3346.     <script>
  3347.         /* ============================================
  3348.    SESSIONS - SCROLL AVEC BOUTONS
  3349.    ============================================ */
  3350.         (function(){
  3351.             var rail = document.getElementById('sessionsRail');
  3352.             if(!rail) return;
  3353.             var nextBtn = document.getElementById('sessionsNext');
  3354.             var prevBtn = document.getElementById('sessionsPrev');
  3355.             function getScrollAmount() {
  3356.                 var firstCard = document.querySelector('.sessions-card');
  3357.                 if(firstCard) {
  3358.                     var cardWidth = firstCard.offsetWidth;
  3359.                     var belt = document.querySelector('.sessions-belt');
  3360.                     var gap = belt ? parseInt(getComputedStyle(belt).gap) || 28 : 28;
  3361.                     return cardWidth + gap;
  3362.                 }
  3363.                 return 380;
  3364.             }
  3365.             function scrollLeft() {
  3366.                 rail.scrollBy({ left: -getScrollAmount(), behavior: 'smooth' });
  3367.                 setTimeout(checkButtonsVisibility, 350);
  3368.             }
  3369.             function scrollRight() {
  3370.                 rail.scrollBy({ left: getScrollAmount(), behavior: 'smooth' });
  3371.                 setTimeout(checkButtonsVisibility, 350);
  3372.             }
  3373.             function checkButtonsVisibility() {
  3374.                 if(!nextBtn || !prevBtn) return;
  3375.                 var maxScroll = rail.scrollWidth - rail.clientWidth;
  3376.                 var currentScroll = rail.scrollLeft;
  3377.                 prevBtn.style.opacity = currentScroll <= 10 ? '0.4' : '1';
  3378.                 prevBtn.style.cursor = currentScroll <= 10 ? 'not-allowed' : 'pointer';
  3379.                 prevBtn.disabled = currentScroll <= 10;
  3380.                 nextBtn.style.opacity = currentScroll >= maxScroll - 10 ? '0.4' : '1';
  3381.                 nextBtn.style.cursor = currentScroll >= maxScroll - 10 ? 'not-allowed' : 'pointer';
  3382.                 nextBtn.disabled = currentScroll >= maxScroll - 10;
  3383.             }
  3384.             if(nextBtn) nextBtn.addEventListener('click', function() { if(!nextBtn.disabled) scrollRight(); });
  3385.             if(prevBtn) prevBtn.addEventListener('click', function() { if(!prevBtn.disabled) scrollLeft(); });
  3386.             // Drag to scroll
  3387.             var isDown = false, startX, scrollLeftPos;
  3388.             rail.addEventListener('mousedown', function(e) {
  3389.                 isDown = true;
  3390.                 rail.style.cursor = 'grabbing';
  3391.                 startX = e.pageX - rail.offsetLeft;
  3392.                 scrollLeftPos = rail.scrollLeft;
  3393.                 e.preventDefault();
  3394.             });
  3395.             rail.addEventListener('mouseleave', function() { isDown = false; rail.style.cursor = 'grab'; });
  3396.             rail.addEventListener('mouseup', function() { isDown = false; rail.style.cursor = 'grab'; setTimeout(checkButtonsVisibility, 100); });
  3397.             rail.addEventListener('mousemove', function(e) {
  3398.                 if(!isDown) return;
  3399.                 e.preventDefault();
  3400.                 var walk = (e.pageX - rail.offsetLeft - startX) * 1.5;
  3401.                 rail.scrollLeft = scrollLeftPos - walk;
  3402.                 checkButtonsVisibility();
  3403.             });
  3404.             rail.addEventListener('scroll', checkButtonsVisibility);
  3405.             window.addEventListener('resize', function() { setTimeout(checkButtonsVisibility, 200); });
  3406.             setTimeout(checkButtonsVisibility, 500);
  3407.         })();
  3408.     </script>
  3409. {% endblock %}