浏览代码

Merge branch 'feature/V8-5662-responsive-du-site-logiciel' into develop

Olivier Massot 1 年之前
父节点
当前提交
a3ebe76855
共有 63 个文件被更改,包括 1617 次插入604 次删除
  1. 4 0
      app.vue
  2. 4 0
      assets/style/main.scss
  3. 0 0
      components/About/Banner.vue
  4. 19 9
      components/About/FAQ.vue
  5. 3 2
      components/About/Logiciels.vue
  6. 16 4
      components/About/Presentation.vue
  7. 9 3
      components/About/Valeurs.vue
  8. 2 1
      components/Common/ActionMenu.vue
  9. 2 1
      components/Common/Avantages.vue
  10. 14 1
      components/Common/Banner.vue
  11. 4 0
      components/Common/Card/Stat.vue
  12. 33 3
      components/Common/Carousel/Clients.vue
  13. 20 2
      components/Common/ContainerVideo.vue
  14. 35 3
      components/Common/Presentation.vue
  15. 45 11
      components/Common/ReviewSection.vue
  16. 169 2
      components/Common/Table/Comparatif.vue
  17. 11 0
      components/Contact/Form.vue
  18. 7 2
      components/Contact/Map.vue
  19. 2 2
      components/Formation/Certification.vue
  20. 2 2
      components/Formation/OPCA.vue
  21. 1 0
      components/Formation/Participation.vue
  22. 11 5
      components/Formation/Presentation.vue
  23. 27 3
      components/Home/Besoin.vue
  24. 43 4
      components/Home/Caroussel.vue
  25. 68 40
      components/Home/EventAgenda.vue
  26. 15 1
      components/Home/Help.vue
  27. 71 25
      components/Home/Promotion.vue
  28. 11 5
      components/Home/Reviews.vue
  29. 91 33
      components/Home/Solution.vue
  30. 19 4
      components/JoinUs/MissionDetail.vue
  31. 34 3
      components/JoinUs/Missions.vue
  32. 63 9
      components/Layout/FAQ.vue
  33. 36 30
      components/Layout/Footer/Footer.vue
  34. 37 3
      components/Layout/Footer/Prefooter.vue
  35. 23 7
      components/Layout/Footer/Solutions.vue
  36. 12 228
      components/Layout/Navigation.vue
  37. 97 0
      components/Layout/Navigation/Lg.vue
  38. 179 0
      components/Layout/Navigation/Md.vue
  39. 7 0
      components/Layout/UI/Title.vue
  40. 27 2
      components/Layout/UI/TitlePage.vue
  41. 61 100
      components/Logiciels/Artist/Abonnement.vue
  42. 125 0
      components/Logiciels/Artist/Abonnement/ToSubscribe.vue
  43. 3 2
      components/Logiciels/Artist/Comparatif.vue
  44. 35 6
      components/Logiciels/Artist/Formations.vue
  45. 3 3
      components/Logiciels/Artist/SomeNumbers.vue
  46. 1 1
      components/Logiciels/Manager/Formation.vue
  47. 2 1
      components/Logiciels/Manager/Network.vue
  48. 3 3
      components/Logiciels/Manager/SomeNumbers.vue
  49. 28 9
      components/Logiciels/School/Contact.vue
  50. 16 1
      components/Logiciels/School/Formations.vue
  51. 4 4
      components/Logiciels/School/SomeNumbers.vue
  52. 14 3
      components/Logiciels/Title.vue
  53. 16 4
      components/News/Details.vue
  54. 11 2
      components/News/List.vue
  55. 10 3
      components/Webinaire/Catalogue.vue
  56. 0 1
      pages/CGV.vue
  57. 1 1
      pages/formations.vue
  58. 3 3
      pages/index.vue
  59. 2 2
      pages/opentalent_artist.vue
  60. 2 2
      pages/opentalent_manager.vue
  61. 2 2
      pages/opentalent_school.vue
  62. 1 1
      pages/qui-sommes-nous.vue
  63. 1 0
      types/interface.d.ts

+ 4 - 0
app.vue

@@ -10,6 +10,10 @@
 
 
 <script setup lang="ts">
 <script setup lang="ts">
 
 
+import { useDisplay } from "vuetify";
+
+const { mdAndDown } = useDisplay()
+
 const layoutStore = useLayoutStore()
 const layoutStore = useLayoutStore()
 
 
 layoutStore.resetAnchoredSections()
 layoutStore.resetAnchoredSections()

+ 4 - 0
assets/style/main.scss

@@ -21,6 +21,10 @@ body {
   width: 90%;
   width: 90%;
   margin-right: auto;
   margin-right: auto;
   margin-left: auto;
   margin-left: auto;
+
+  @media (max-width: 600px) {
+    width: 96%;
+  }
 }
 }
 .v-row.center-90 {
 .v-row.center-90 {
   margin: -12px auto;
   margin: -12px auto;

+ 0 - 0
components/About/Banner.vue


+ 19 - 9
components/About/FAQ.vue

@@ -2,23 +2,23 @@
   <AnchoredSection id="help">
   <AnchoredSection id="help">
     <LayoutContainer>
     <LayoutContainer>
       <v-row no-gutters class="alt-theme">
       <v-row no-gutters class="alt-theme">
-        <v-col cols="6">
+        <v-col cols="12" md="6">
            <v-img
            <v-img
              src="/images/help/Help.png"
              src="/images/help/Help.png"
              cover
              cover
            />
            />
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
-          <div class="ml-6">
-            <h4 class="ml-12">
+        <v-col cols="12" md="6">
+          <div>
+            <h4>
               Chez Opentalent, nous avons à coeur de répondre à vos interrogations
               Chez Opentalent, nous avons à coeur de répondre à vos interrogations
               et de vous apporter la solution faite pour vous.
               et de vous apporter la solution faite pour vous.
             </h4>
             </h4>
 
 
             <v-btn
             <v-btn
               to="/nous-contacter"
               to="/nous-contacter"
-              class="ml-12 mt-12"
+              class="mt-12"
             >
             >
               Nous contacter
               Nous contacter
             </v-btn>
             </v-btn>
@@ -46,14 +46,18 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 }
 }
 
 
 h4 {
 h4 {
-  margin-bottom: 2rem;
-  margin-top: 3rem;
   font-weight: 400;
   font-weight: 400;
   font-size: 2rem;
   font-size: 2rem;
   line-height: 34px;
   line-height: 34px;
   width: 40rem;
   width: 40rem;
-  margin-right: auto;
+  margin: 3rem auto 2rem 62px;
   color: var(--on-primary-color);
   color: var(--on-primary-color);
+
+  @media (max-width: 600px) {
+    width: 80%;
+    margin-left: 10%;
+    text-align: justify;
+  }
 }
 }
 
 
 .v-btn {
 .v-btn {
@@ -64,6 +68,12 @@ h4 {
   color: var(--on-secondary-color);
   color: var(--on-secondary-color);
   padding: 19px 28px;
   padding: 19px 28px;
   gap: 9px;
   gap: 9px;
-  margin-left: 2rem;
+  margin-left: 84px;
+
+  @media (max-width: 600px) {
+    width: 80%;
+    margin-left: 10%;
+    margin-bottom: 48px;
+  }
 }
 }
 </style>
 </style>

+ 3 - 2
components/About/Logiciels.vue

@@ -12,7 +12,7 @@
       </v-row>
       </v-row>
 
 
       <v-row class="mb-12 center-90">
       <v-row class="mb-12 center-90">
-        <v-col cols="3">
+        <v-col md="3">
           <p class="text-justify mr-4 ml-6 mb-6">
           <p class="text-justify mr-4 ml-6 mb-6">
             Découvrez notre gamme de logiciels de gestion & de communication
             Découvrez notre gamme de logiciels de gestion & de communication
             adapté au secteur culturel. <br />
             adapté au secteur culturel. <br />
@@ -34,7 +34,8 @@
         </v-col>
         </v-col>
 
 
         <v-col
         <v-col
-          cols="3"
+          cols="12"
+          md="3"
           v-for="(item, index) in items"
           v-for="(item, index) in items"
           :key="index"
           :key="index"
           :class="item.class"
           :class="item.class"

+ 16 - 4
components/About/Presentation.vue

@@ -2,13 +2,13 @@
   <AnchoredSection id="about">
   <AnchoredSection id="about">
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="mt-12 center-90">
       <v-row class="mt-12 center-90">
-        <v-col cols="4">
+        <v-col md="4">
           <LayoutUISubTitle>
           <LayoutUISubTitle>
             Qui sommes-nous ?
             Qui sommes-nous ?
           </LayoutUISubTitle>
           </LayoutUISubTitle>
         </v-col>
         </v-col>
 
 
-        <v-col cols="8">
+        <v-col md="8">
           <div class="italic-title mr-8">
           <div class="italic-title mr-8">
             “Imaginé par des musiciens pour des musiciens, Opentalent se veut être
             “Imaginé par des musiciens pour des musiciens, Opentalent se veut être
             la référence pour la gestion et la promotion du spectacle vivant sur
             la référence pour la gestion et la promotion du spectacle vivant sur
@@ -18,11 +18,11 @@
       </v-row>
       </v-row>
 
 
       <v-row class="history mb-12">
       <v-row class="history mb-12">
-        <v-col cols="6">
+        <v-col md="6">
           <v-img src="/images/about/passion.jpg" cover />
           <v-img src="/images/about/passion.jpg" cover />
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
+        <v-col md="6">
           <h3>
           <h3>
             Une histoire de passionnés
             Une histoire de passionnés
           </h3>
           </h3>
@@ -94,6 +94,10 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     width: 400px;
     width: 400px;
     height: 100%;
     height: 100%;
     border-radius: 20px;
     border-radius: 20px;
+
+    @media (max-width: 600px) {
+      width: 90%;
+    }
   }
   }
 
 
   h3 {
   h3 {
@@ -112,6 +116,10 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     margin-bottom: 3rem;
     margin-bottom: 3rem;
     width: 25rem;
     width: 25rem;
     text-align: justify;
     text-align: justify;
+
+    @media (max-width: 600px) {
+      width: 100%;
+    }
   }
   }
 
 
   p {
   p {
@@ -121,6 +129,10 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     line-height: 20px;
     line-height: 20px;
     width: 30rem;
     width: 30rem;
     margin-bottom: 2rem;
     margin-bottom: 2rem;
+
+    @media (max-width: 600px) {
+      width: 100%;
+    }
   }
   }
 }
 }
 
 

+ 9 - 3
components/About/Valeurs.vue

@@ -8,7 +8,7 @@
       </v-row>
       </v-row>
 
 
       <v-row class="mt-6 center-90 align-center mb-12">
       <v-row class="mt-6 center-90 align-center mb-12">
-        <v-col cols="6">
+        <v-col md="6">
           <v-img
           <v-img
             src="/images/about/valeurs/valeur.png"
             src="/images/about/valeurs/valeur.png"
             cover
             cover
@@ -16,14 +16,15 @@
           />
           />
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
+        <v-col md="6">
           <div class="values">
           <div class="values">
             <v-row
             <v-row
               v-for="(row, rowIndex) in values"
               v-for="(row, rowIndex) in values"
               :key="rowIndex"
               :key="rowIndex"
             >
             >
               <v-col
               <v-col
-                cols="6"
+                cols="12"
+                md="6"
                 v-for="(value, valueIndex) in row"
                 v-for="(value, valueIndex) in row"
                 :key="valueIndex"
                 :key="valueIndex"
               >
               >
@@ -98,6 +99,11 @@ const values: Array<Array<SocietyValue>> = [
     width: 50px;
     width: 50px;
     height: 50px;
     height: 50px;
     margin-bottom: 1rem;
     margin-bottom: 1rem;
+
+    @media (max-width: 600px) {
+      margin-left: auto;
+      margin-right: auto;
+    }
   }
   }
 
 
   h6 {
   h6 {

+ 2 - 1
components/Common/ActionMenu.vue

@@ -159,7 +159,8 @@ const onActionClick = (action: ActionMenuItem) => {
   background-color: var(--neutral-color);
   background-color: var(--neutral-color);
 
 
   .v-btn {
   .v-btn {
-    margin: 4px 6px;
+    margin: 6px 2%;
+    width: 46%;
   }
   }
 }
 }
 
 

+ 2 - 1
components/Common/Avantages.vue

@@ -10,7 +10,7 @@
       </LayoutUITitle>
       </LayoutUITitle>
     </v-row>
     </v-row>
 
 
-    <v-row class="center-90">
+    <v-row  class="center-90">
       <v-col
       <v-col
         cols="12"
         cols="12"
         md="4"
         md="4"
@@ -28,6 +28,7 @@
 
 
 <script setup lang="ts">
 <script setup lang="ts">
 import type { Benefit } from "~/types/interface";
 import type { Benefit } from "~/types/interface";
+import { useDisplay } from "vuetify";
 
 
 const props = defineProps({
 const props = defineProps({
   benefits: {
   benefits: {

+ 14 - 1
components/Common/Banner.vue

@@ -99,6 +99,10 @@ const props = defineProps({
   object-position: center var(--banner-center-image);
   object-position: center var(--banner-center-image);
   transition: transform 0.2s;
   transition: transform 0.2s;
   margin: 0 auto;
   margin: 0 auto;
+
+  @media (max-width: 600px) {
+    min-height: 0;
+  }
 }
 }
 
 
 .reverse {
 .reverse {
@@ -118,12 +122,16 @@ const props = defineProps({
   width: 13rem;
   width: 13rem;
   height: 10rem;
   height: 10rem;
   background: var(--secondary-color);
   background: var(--secondary-color);
+
+  @media (max-width: 600px) {
+    width: 50%;
+  }
 }
 }
 
 
 .logo-square {
 .logo-square {
   position: absolute;
   position: absolute;
   bottom: 0;
   bottom: 0;
-  right: 13rem;
+  right: 10rem;
   width: 13rem;
   width: 13rem;
   height: 10rem;
   height: 10rem;
 
 
@@ -132,6 +140,11 @@ const props = defineProps({
     height: 50%;
     height: 50%;
     margin-top: 2.5rem;
     margin-top: 2.5rem;
   }
   }
+
+  @media (max-width: 600px) {
+    right: 50%;
+    width: 50%;
+  }
 }
 }
 .logo-square:not(.alt-theme) {
 .logo-square:not(.alt-theme) {
   background: var(--primary-color);
   background: var(--primary-color);

+ 4 - 0
components/Common/Card/Stat.vue

@@ -40,6 +40,10 @@ const props = defineProps({
     text-align: center;
     text-align: center;
     margin-bottom: 0.5rem;
     margin-bottom: 0.5rem;
   }
   }
+
+  @media (max-width: 1240px) {
+    height: 12rem;
+  }
 }
 }
 
 
 
 

+ 33 - 3
components/Common/Carousel/Clients.vue

@@ -15,6 +15,7 @@
       <v-row>
       <v-row>
         <!-- Fléche de gauche -->
         <!-- Fléche de gauche -->
         <v-btn
         <v-btn
+          v-if="mdAndUp"
           icon="fas fa-chevron-left"
           icon="fas fa-chevron-left"
           @click="goToPrevious"
           @click="goToPrevious"
         />
         />
@@ -23,8 +24,8 @@
         <Carousel
         <Carousel
           ref="carousel"
           ref="carousel"
           class="elevation-4 mb-12"
           class="elevation-4 mb-12"
-          :items-to-show="4"
-          :items-to-scroll="2"
+          :items-to-show="lgAndUp ? 4 : 1"
+          :items-to-scroll="lgAndUp ? 2 : 1"
         >
         >
           <Slide v-for="(item, index) in items" :key="index">
           <Slide v-for="(item, index) in items" :key="index">
             <div>
             <div>
@@ -34,6 +35,18 @@
         </Carousel>
         </Carousel>
 
 
         <!-- Fléche de droite -->
         <!-- Fléche de droite -->
+        <v-btn
+          v-if="mdAndUp"
+          icon="fas fa-chevron-right"
+          @click="goToNext"
+        />
+      </v-row>
+
+      <v-row v-if="mdAndDown">
+        <v-btn
+          icon="fas fa-chevron-left"
+          @click="goToPrevious"
+        />
         <v-btn
         <v-btn
           icon="fas fa-chevron-right"
           icon="fas fa-chevron-right"
           @click="goToNext"
           @click="goToNext"
@@ -46,6 +59,9 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { Carousel, Slide } from "vue3-carousel";
 import { Carousel, Slide } from "vue3-carousel";
 import type { PropType } from "@vue/runtime-core";
 import type { PropType } from "@vue/runtime-core";
+import { useDisplay } from "vuetify";
+
+const { mdAndUp, lgAndUp, mdAndDown } = useDisplay()
 
 
 const carousel: Ref<typeof Carousel | null> = ref(null);
 const carousel: Ref<typeof Carousel | null> = ref(null);
 
 
@@ -83,10 +99,14 @@ h3 {
   line-height: 42px;
   line-height: 42px;
   color: var(--on-primary-color);
   color: var(--on-primary-color);
   width: 50%;
   width: 50%;
+
+  @media (max-width: 1240px) {
+    width: 70%;
+  }
 }
 }
 
 
 .alt-color {
 .alt-color {
-  color: var(--on-primary-color-alt);
+  color: var(--on-primary-color-alt) !important;
 }
 }
 
 
 .v-btn {
 .v-btn {
@@ -112,6 +132,16 @@ h3 {
   margin-left: auto;
   margin-left: auto;
   margin-right: auto;
   margin-right: auto;
   box-shadow: var(--primary-color);
   box-shadow: var(--primary-color);
+
+  @media (max-width: 1240px) {
+    width: 50%;
+    min-width: 600px;
+  }
+
+  @media (max-width: 1240px) {
+    width: 90%;
+    min-width: 90%;
+  }
 }
 }
 
 
 .v-img {
 .v-img {

+ 20 - 2
components/Common/ContainerVideo.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
-    <div class="container-green">
+    <div v-if="mdAndUp" class="container-green">
       <v-row class="mt-12">
       <v-row class="mt-12">
         <v-row>
         <v-row>
           <v-col cols="6">
           <v-col cols="6">
@@ -8,7 +8,7 @@
               {{ title }}
               {{ title }}
             </LayoutUISubTitle>
             </LayoutUISubTitle>
 
 
-            <p class="quote">
+            <p v-if="lgAndUp" class="quote">
               {{ quote }}
               {{ quote }}
             </p>
             </p>
           </v-col>
           </v-col>
@@ -23,10 +23,19 @@
         </v-row>
         </v-row>
       </v-row>
       </v-row>
     </div>
     </div>
+
+    <div v-else>
+
+    </div>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
+
+import { useDisplay } from "vuetify";
+
+const { mdAndUp, lgAndUp } = useDisplay()
+
 const props = defineProps({
 const props = defineProps({
   title: {
   title: {
     type: String,
     type: String,
@@ -66,6 +75,11 @@ const props = defineProps({
   background-position: center;
   background-position: center;
   width: 650px;
   width: 650px;
   height: 650px;
   height: 650px;
+
+  @media (max-width: 1240px) {
+    width: 400px;
+    height: 400px;
+  }
 }
 }
 
 
 .quote {
 .quote {
@@ -87,5 +101,9 @@ const props = defineProps({
   background: linear-gradient(180deg, rgba(14, 45, 50, 0) 26.84%, #0e2d32 100%),
   background: linear-gradient(180deg, rgba(14, 45, 50, 0) 26.84%, #0e2d32 100%),
     rgba(7, 27, 31, 0.3);
     rgba(7, 27, 31, 0.3);
   height: 40rem;
   height: 40rem;
+
+  @media (max-width: 1240px) {
+    height: 400px;
+  }
 }
 }
 </style>
 </style>

+ 35 - 3
components/Common/Presentation.vue

@@ -7,7 +7,7 @@ Section "Présentation" d'une page Logiciel
       <v-row class="center-90">
       <v-row class="center-90">
 
 
         <!-- Colonne 1 (sous-titre, illustration logiciels, prix) -->
         <!-- Colonne 1 (sous-titre, illustration logiciels, prix) -->
-        <v-col cols="5">
+        <v-col cols="12" lg="5">
           <LayoutUISubTitle class="ml-8" >
           <LayoutUISubTitle class="ml-8" >
             {{ title }}
             {{ title }}
           </LayoutUISubTitle>
           </LayoutUISubTitle>
@@ -48,7 +48,7 @@ Section "Présentation" d'une page Logiciel
         </v-col>
         </v-col>
 
 
         <!-- Colonne 2 (présentation, pictogrammes des fonctionnalités) -->
         <!-- Colonne 2 (présentation, pictogrammes des fonctionnalités) -->
-        <v-col cols="6">
+        <v-col cols="12" lg="6">
           <h3>
           <h3>
             {{ section1title }}
             {{ section1title }}
           </h3>
           </h3>
@@ -66,7 +66,7 @@ Section "Présentation" d'une page Logiciel
             {{ section2title }}
             {{ section2title }}
           </h3>
           </h3>
 
 
-          <div class="d-flex flex-row">
+          <div class="picto-container">
             <div
             <div
               v-for="picto in pictos"
               v-for="picto in pictos"
               :key="picto.text"
               :key="picto.text"
@@ -201,6 +201,23 @@ const props = defineProps({
     font-size: 1.5rem;
     font-size: 1.5rem;
     font-weight: 400;
     font-weight: 400;
   }
   }
+
+  @media (max-width: 600px) {
+    width: 280px;
+
+    .details {
+      margin-left: 0;
+    }
+  }
+}
+
+.picto-container {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+
+  @media (max-width: 600px) {
+  }
 }
 }
 
 
 .picto {
 .picto {
@@ -226,6 +243,20 @@ const props = defineProps({
     background-repeat: no-repeat;
     background-repeat: no-repeat;
     background-position: center;
     background-position: center;
   }
   }
+
+  @media (max-width: 600px) {
+    width: 50%;
+    margin: 0 auto;
+
+    .text {
+      width: 90%;
+    }
+
+    .img {
+      width: 100%;
+      height: 100%;
+    }
+  }
 }
 }
 
 
 h3 {
 h3 {
@@ -233,6 +264,7 @@ h3 {
   font-size: 34px;
   font-size: 34px;
   font-weight: 400;
   font-weight: 400;
   line-height: 38px;
   line-height: 38px;
+  max-width: 90%;
 }
 }
 
 
 h3:first-child {
 h3:first-child {

+ 45 - 11
components/Common/ReviewSection.vue

@@ -1,13 +1,13 @@
 <template>
 <template>
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="center-90">
       <v-row class="center-90">
-        <v-col cols="3">
+        <v-col cols="12" lg="3">
           <div class="controls-section">
           <div class="controls-section">
             <h3>
             <h3>
               Ce sont eux qui en parlent le mieux
               Ce sont eux qui en parlent le mieux
             </h3>
             </h3>
 
 
-            <div class="carousel-controls">
+            <div v-if="lgAndUp" class="carousel-controls">
               <v-btn
               <v-btn
                 icon="fas fa-chevron-left"
                 icon="fas fa-chevron-left"
                 @click="goPrevious"
                 @click="goPrevious"
@@ -20,14 +20,16 @@
           </div>
           </div>
         </v-col>
         </v-col>
 
 
-        <v-col cols="9">
-          <Carousel
+        <v-col cols="12" lg="9">
+          <v-carousel
             ref="carousel"
             ref="carousel"
-            :items-to-show="3"
-            :items-to-scroll="1"
-            :wrap-around="true"
+            :items-to-show="lgAndUp ? 3 : 1"
+            :wrapAround="true"
+            :show-arrows="false"
+            height="350"
+            class="carousel"
           >
           >
-            <Slide
+            <v-carousel-item
               v-for="(card, index) in cards"
               v-for="(card, index) in cards"
               :key="index"
               :key="index"
               class="card"
               class="card"
@@ -54,8 +56,8 @@
                   </v-card-actions>
                   </v-card-actions>
                 </v-card>
                 </v-card>
               </v-container>
               </v-container>
-            </Slide>
-          </Carousel>
+            </v-carousel-item>
+          </v-carousel>
         </v-col>
         </v-col>
       </v-row>
       </v-row>
   </LayoutContainer>
   </LayoutContainer>
@@ -66,6 +68,7 @@ import { Carousel, Slide } from "vue3-carousel";
 import "vue3-carousel/dist/carousel.css";
 import "vue3-carousel/dist/carousel.css";
 import type { PropType } from "@vue/runtime-core";
 import type { PropType } from "@vue/runtime-core";
 import type { Review } from "~/types/interface";
 import type { Review } from "~/types/interface";
+import { useDisplay } from "vuetify";
 
 
 const props = defineProps({
 const props = defineProps({
   cards: {
   cards: {
@@ -74,6 +77,8 @@ const props = defineProps({
   },
   },
 });
 });
 
 
+const { lgAndUp } = useDisplay()
+
 const carousel: Ref<typeof Carousel | null> = ref(null);
 const carousel: Ref<typeof Carousel | null> = ref(null);
 
 
 const goPrevious = () => {
 const goPrevious = () => {
@@ -138,6 +143,12 @@ const goNext = () => {
     max-height: 300px;
     max-height: 300px;
     margin-top: 2rem;
     margin-top: 2rem;
     margin-bottom: 0.6rem;
     margin-bottom: 0.6rem;
+
+    @media (max-width: 1240px) {
+      min-height: 120px;
+      max-width: 70%;
+      margin: 0 auto;
+    }
   }
   }
 
 
   .v-card-item {
   .v-card-item {
@@ -175,7 +186,15 @@ const goNext = () => {
     align-items: center;
     align-items: center;
     letter-spacing: 0.18em;
     letter-spacing: 0.18em;
     text-transform: uppercase;
     text-transform: uppercase;
-    text-align: justify !important;
+
+    @media (min-width: 600px) {
+      text-align: justify !important;
+    }
+
+    @media (max-width: 600px) {
+      margin: 12px auto;
+      text-align: center !important;
+    }
   }
   }
 
 
   .reviewer-structure {
   .reviewer-structure {
@@ -193,11 +212,19 @@ const goNext = () => {
       max-height: 150px !important;
       max-height: 150px !important;
     }
     }
   }
   }
+
+  @media (max-width: 1240px) {
+  }
 }
 }
 
 
 .card {
 .card {
   margin-left: 0.5rem;
   margin-left: 0.5rem;
   border-radius: 1rem;
   border-radius: 1rem;
+
+  @media (max-width:1240px) {
+    margin-left: 15%;
+    max-width: 70%;
+  }
 }
 }
 
 
 @media (min-width:2100px) {
 @media (min-width:2100px) {
@@ -206,4 +233,11 @@ const goNext = () => {
     max-height: 360px !important;
     max-height: 360px !important;
   }
   }
 }
 }
+
+@media (max-width:600px) {
+  :deep(.v-carousel__controls) {
+    color: var(--on-neutral-color);
+    background-color: var(--neutral-color);
+  }
+}
 </style>
 </style>

+ 169 - 2
components/Common/Table/Comparatif.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <v-row class="center-90">
     <v-row class="center-90">
-      <table>
+      <table v-if="mdAndUp">
         <thead>
         <thead>
           <tr>
           <tr>
             <th/>
             <th/>
@@ -75,13 +75,125 @@
           </tr>
           </tr>
         </tbody>
         </tbody>
       </table>
       </table>
+
+      <div v-else>
+        <div class="d-flex flex-row flex-grow-1 justify-center mt-2">
+          <v-btn
+            :disabled="carouselPos === 0"
+            icon="fas fa-chevron-left"
+            class="mr-6"
+            @click="goToPrevious"
+          />
+          <v-btn
+            :disabled="carouselPos === 1"
+            icon="fas fa-chevron-right"
+            @click="goToNext"
+          />
+        </div>
+
+        <v-carousel
+          v-model="carouselPos"
+          :hide-delimiters="true"
+          :show-arrows="false"
+          :height="height"
+        >
+          <v-carousel-item>
+            <h4>Standard</h4>
+            <div>
+              <p class="from">À partir de</p>
+              <p class="price">
+                {{ standardPrice }} <span class="ttc">ttc</span>
+                <span class="month">/mois</span>
+              </p>
+            </div>
+
+            <table>
+              <tbody>
+                <tr
+                  v-for="(item, index) in items"
+                  :key="item.label"
+                >
+                  <td class="label-column">
+                    {{ item.label }}
+                  </td>
+
+                  <td>
+                    <v-icon
+                      v-if="item.includedInStandard === true"
+                      icon="far fa-check-circle"
+                      size="18"
+                    />
+
+                    <v-icon
+                      v-else-if="item.includedInStandard === false"
+                      icon="far fa-times-circle"
+                      size="18"
+                      color="red"
+                    />
+
+                    <span v-else>
+                      {{ item.includedInStandard }}
+                    </span>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </v-carousel-item>
+
+          <v-carousel-item>
+            <h4>Premium</h4>
+
+            <div>
+              <p class="from">À partir de</p>
+              <p class="price">
+                {{ premiumPrice }} <span class="ttc">ttc</span>
+                <span class="month">/mois</span>
+              </p>
+            </div>
+
+            <table>
+              <tbody>
+              <tr
+                v-for="(item, index) in items"
+                :key="item.label"
+              >
+                <td class="label-column">
+                  {{ item.label }}
+                </td>
+
+                <td>
+                  <v-icon
+                    v-if="item.includedInPremium === true"
+                    icon="far fa-check-circle"
+                    size="18"
+                  />
+
+                  <v-icon
+                    v-else-if="item.includedInPremium === false"
+                    icon="far fa-times-circle"
+                    size="18"
+                    color="red"
+                  />
+
+                  <span v-else>
+                  {{ item.includedInPremium }}
+                </span>
+                </td>
+              </tr>
+              </tbody>
+            </table>
+          </v-carousel-item>
+        </v-carousel>
+      </div>
     </v-row>
     </v-row>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-
 import type { ComparisonItem } from "~/types/interface";
 import type { ComparisonItem } from "~/types/interface";
+import { useDisplay } from "vuetify";
+
+const { mdAndUp } = useDisplay()
 
 
 const props = defineProps({
 const props = defineProps({
   standardPrice: {
   standardPrice: {
@@ -97,6 +209,18 @@ const props = defineProps({
     required: true
     required: true
   }
   }
 });
 });
+
+const height = computed(() => 150 + props.items.length * 48)
+
+const carouselPos = ref(0)
+
+const goToPrevious = () => {
+  carouselPos.value = 0
+};
+
+const goToNext = () => {
+  carouselPos.value = 1
+};
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
@@ -114,6 +238,10 @@ table {
   margin-left: auto;
   margin-left: auto;
   border: none;
   border: none;
   border-collapse: collapse;
   border-collapse: collapse;
+
+  @media (max-width: 940px) {
+    width: 100%;
+  }
 }
 }
 
 
 th {
 th {
@@ -121,6 +249,10 @@ th {
   font-weight: 400;
   font-weight: 400;
   font-size: 30px;
   font-size: 30px;
   line-height: 34px;
   line-height: 34px;
+
+  @media (max-width: 600px) {
+    font-size: 18px;
+  }
 }
 }
 
 
 tr {
 tr {
@@ -134,6 +266,10 @@ tbody tr:nth-child(even) {
 
 
 td {
 td {
   padding-right: 5rem;
   padding-right: 5rem;
+
+  @media (max-width: 600px) {
+    padding-right: 0;
+  }
 }
 }
 
 
 td:first-child {
 td:first-child {
@@ -145,6 +281,10 @@ td:first-child {
   letter-spacing: 0.18em;
   letter-spacing: 0.18em;
   text-transform: uppercase;
   text-transform: uppercase;
   color: var(--on-neutral-color-alt);
   color: var(--on-neutral-color-alt);
+
+  @media (max-width: 600px) {
+    padding-left: 5px;
+  }
 }
 }
 
 
 .standard {
 .standard {
@@ -183,5 +323,32 @@ td:first-child {
 
 
 .month {
 .month {
   padding-right: 5rem;
   padding-right: 5rem;
+
+  @media (max-width: 600px) {
+    padding-right: 0;
+  }
 }
 }
+
+.v-carousel {
+  h4 {
+    text-align: center;
+    margin: 24px auto 12px auto;
+    text-transform: uppercase;
+    letter-spacing: 0.25em;
+  }
+
+  p {
+    padding-right: 0;
+  }
+
+  .price {
+    margin-top: 12px;
+  }
+
+  .ttc {
+    padding-right: 10px;
+  }
+}
+
+
 </style>
 </style>

+ 11 - 0
components/Contact/Form.vue

@@ -312,6 +312,11 @@ const submit = async (): Promise<void> => {
     align-items: center;
     align-items: center;
     font-weight: 100;
     font-weight: 100;
 
 
+    @media (max-width: 600px) {
+      font-size: 24px;
+      line-height: 48px;
+    }
+
     .line {
     .line {
       display: block;
       display: block;
       height: 1px;
       height: 1px;
@@ -350,6 +355,12 @@ const submit = async (): Promise<void> => {
 
 
   .legal {
   .legal {
     opacity: 0.7;
     opacity: 0.7;
+
+    @media (max-width: 600px) {
+      max-width: 80%;
+      margin-left: auto;
+      margin-right: auto;
+    }
   }
   }
 }
 }
 
 

+ 7 - 2
components/Contact/Map.vue

@@ -5,7 +5,7 @@
     </h4>
     </h4>
 
 
     <v-row>
     <v-row>
-      <v-col cols="6">
+      <v-col cols="12" md="6">
         <div class="map-container">
         <div class="map-container">
           <l-map
           <l-map
             ref="map"
             ref="map"
@@ -46,7 +46,7 @@
         </div>
         </div>
       </v-col>
       </v-col>
 
 
-      <v-col class="infos">
+      <v-col cols="12" md="6" class="infos">
         <div class="name mb-8">
         <div class="name mb-8">
           Opentalent
           Opentalent
         </div>
         </div>
@@ -101,6 +101,11 @@ h4 {
   margin: 0 auto 1rem auto;
   margin: 0 auto 1rem auto;
   max-width: 1400px;
   max-width: 1400px;
 
 
+  @media (max-width: 600px) {
+    font-size: 24px;
+    line-height: 48px;
+  }
+
   .line {
   .line {
     display: block;
     display: block;
     height: 1px;
     height: 1px;

+ 2 - 2
components/Formation/Certification.vue

@@ -2,7 +2,7 @@
   <AnchoredSection id="certification">
   <AnchoredSection id="certification">
     <LayoutContainer>
     <LayoutContainer>
       <v-row class="center-90">
       <v-row class="center-90">
-        <v-col cols="5">
+        <v-col cols="12" md="5">
           <LayoutUISubTitle>
           <LayoutUISubTitle>
             DES FORMATIONS CERTIFIÉES
             DES FORMATIONS CERTIFIÉES
           </LayoutUISubTitle>
           </LayoutUISubTitle>
@@ -34,7 +34,7 @@
           </div>
           </div>
         </v-col>
         </v-col>
 
 
-        <v-col cols="7">
+        <v-col cols="12" md="7">
           <v-img src="/images/formation/qualiopi.jpg" />
           <v-img src="/images/formation/qualiopi.jpg" />
         </v-col>
         </v-col>
       </v-row>
       </v-row>

+ 2 - 2
components/Formation/OPCA.vue

@@ -9,7 +9,7 @@
 
 
       <v-container>
       <v-container>
         <v-row class="align-center center-90">
         <v-row class="align-center center-90">
-          <v-col cols="6">
+          <v-col cols="12" md="6">
             <v-img
             <v-img
               src="/images/formation/programme.jpg"
               src="/images/formation/programme.jpg"
               class="opca-img"
               class="opca-img"
@@ -17,7 +17,7 @@
             />
             />
           </v-col>
           </v-col>
 
 
-          <v-col cols="12" md="6" lg="6">
+          <v-col cols="12" md="6">
             <v-row>
             <v-row>
               <h3 class="mt-6 mb-6 mr-6">
               <h3 class="mt-6 mb-6 mr-6">
                 Des formations éligibles par votre OPCA
                 Des formations éligibles par votre OPCA

+ 1 - 0
components/Formation/Participation.vue

@@ -105,6 +105,7 @@ h3 {
   line-height: 20px;
   line-height: 20px;
   margin: 1rem auto auto auto;
   margin: 1rem auto auto auto;
   width: 800px;
   width: 800px;
+  max-width: 100%;
   color: var(--on-primary-color);
   color: var(--on-primary-color);
 }
 }
 
 

+ 11 - 5
components/Formation/Presentation.vue

@@ -8,13 +8,13 @@
       </v-row>
       </v-row>
 
 
       <v-row class="mb-12 center-90">
       <v-row class="mb-12 center-90">
-        <v-col cols="6">
+        <v-col md="6">
           <v-img
           <v-img
             src="/images/formation/programme2.jpg"
             src="/images/formation/programme2.jpg"
             class="programme-img1"/>
             class="programme-img1"/>
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
+        <v-col md="6">
           <h3 class="title-programme mb-6">
           <h3 class="title-programme mb-6">
             Un programme de formation complet sur nos logiciels
             Un programme de formation complet sur nos logiciels
           </h3>
           </h3>
@@ -39,7 +39,7 @@
       </v-row>
       </v-row>
 
 
       <v-row class="center-90">
       <v-row class="center-90">
-        <v-col cols="6">
+        <v-col md="6">
           <h3 class="title-programme mb-6 mt-4">
           <h3 class="title-programme mb-6 mt-4">
             Des formations à la demande et sur-mesure
             Des formations à la demande et sur-mesure
           </h3>
           </h3>
@@ -52,7 +52,7 @@
           </p>
           </p>
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
+        <v-col md="6">
           <v-img
           <v-img
             src="/images/formation/programme.jpg"
             src="/images/formation/programme.jpg"
             class="programme-img2"
             class="programme-img2"
@@ -72,10 +72,16 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   width: 80%;
   width: 80%;
   height: 100%;
   height: 100%;
   border-radius: 10%;
   border-radius: 10%;
+
+  @media (max-width: 600px) {
+    margin-left: auto;
+    margin-right: auto;
+  }
 }
 }
 
 
 h3, p {
 h3, p {
-    width: 35rem;
+  width: 35rem;
+  max-width: 100%;
 }
 }
 
 
 h3 {
 h3 {

+ 27 - 3
components/Home/Besoin.vue

@@ -1,15 +1,14 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <v-row
     <v-row
-      v-if="!mdAndDown"
       class="mt-6"
       class="mt-6"
       justify="center"
       justify="center"
     >
     >
-      <v-col cols="6">
+      <v-col cols="12" lg="6">
         <div class="screen-img ml-4" />
         <div class="screen-img ml-4" />
       </v-col>
       </v-col>
 
 
-      <v-col cols="6" >
+      <v-col cols="12" lg="6" class="detail-col" >
         <h3 class="mt-12">
         <h3 class="mt-12">
           Une solution évolutive pour vous donner entière satisfaction
           Une solution évolutive pour vous donner entière satisfaction
         </h3>
         </h3>
@@ -66,5 +65,30 @@ p {
   background-size: cover;
   background-size: cover;
   width: 700px;
   width: 700px;
   height: 500px;
   height: 500px;
+
+  @media (max-width: 1240px) {
+    width: 90%;
+    height: 400px;
+  }
+
+  @media (max-width: 600px) {
+    height: 240px;
+  }
+}
+
+.detail-col {
+  @media (max-width: 1240px) {
+    * {
+      width: 80%;
+      margin: auto;
+      text-align: justify;
+    }
+
+    h3 {
+      margin-bottom: 16px;
+      text-align: center;
+      font-weight: 600;
+    }
+  }
 }
 }
 </style>
 </style>

+ 43 - 4
components/Home/Caroussel.vue

@@ -9,7 +9,7 @@ Carrousel de la page d'accueil
     :hide-delimiter-background="true"
     :hide-delimiter-background="true"
     :show-delimiters="false"
     :show-delimiters="false"
     :touch="true"
     :touch="true"
-    :wrap-around="true"
+    :height="lgAndUp ? 500 : 800"
     :interval="5000"
     :interval="5000"
   >
   >
     <v-carousel-item
     <v-carousel-item
@@ -24,7 +24,7 @@ Carrousel de la page d'accueil
             class="logo"
             class="logo"
           />
           />
 
 
-          <p class="description" v-html="item.description" />
+          <p class="description" v-html="mdAndUp ? item.description : item.descriptionSm" />
 
 
           <v-row class="align-start pl-4">
           <v-row class="align-start pl-4">
             <v-btn
             <v-btn
@@ -70,7 +70,7 @@ Carrousel de la page d'accueil
 
 
             <v-img
             <v-img
               :src="item.image"
               :src="item.image"
-              :class="smAndDown ? 'image-sm' : 'image'"
+              class="image"
             />
             />
           </v-row>
           </v-row>
         </v-col>
         </v-col>
@@ -93,7 +93,7 @@ Carrousel de la page d'accueil
 
 
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 import type { CarouselItem } from "~/types/interface";
 import type { CarouselItem } from "~/types/interface";
-const { smAndDown, mdAndDown } = useDisplay();
+const { smAndDown, mdAndDown, mdAndUp, lgAndUp } = useDisplay();
 
 
 // Index de la slide active
 // Index de la slide active
 let activeIndex: Ref<number> = ref(0);
 let activeIndex: Ref<number> = ref(0);
@@ -107,6 +107,8 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     logo: "/images/logo/logiciels/School-noir.png",
     logo: "/images/logo/logiciels/School-noir.png",
     description:
     description:
       "Pour les petits comme pour les GRANDS établissements d’enseignement artistique tels que les écoles de musique, de danse, de théâtre, d'art, de cirque et conservatoire.<br> Il permet la gestion au quotidien et en temps réel de votre établissement, de gérer vos élèves et vos professeurs, vos emplois du temps, le suivi pédagogique, vos salles, la facturation et les encaissements…",
       "Pour les petits comme pour les GRANDS établissements d’enseignement artistique tels que les écoles de musique, de danse, de théâtre, d'art, de cirque et conservatoire.<br> Il permet la gestion au quotidien et en temps réel de votre établissement, de gérer vos élèves et vos professeurs, vos emplois du temps, le suivi pédagogique, vos salles, la facturation et les encaissements…",
+    descriptionSm:
+      "Pour les petits comme pour les GRANDS établissements d’enseignement artistique tels que les écoles de musique, de danse, de théâtre, d'art, de cirque et conservatoire.",
     buttonClass: "btn-school",
     buttonClass: "btn-school",
     image:
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_School-eleve-Conservatoire_de_Musique.png",
       "/images/Home_logiciel/Logiciel_Opentalent_School-eleve-Conservatoire_de_Musique.png",
@@ -121,6 +123,8 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     logo: "/images/logo/logiciels/Artist-noir.png",
     logo: "/images/logo/logiciels/Artist-noir.png",
     description:
     description:
       "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de danse, théâtre et cirque. <br> Gérez votre activité avec un logiciel de gestion et de communication au service de votre passion.",
       "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de danse, théâtre et cirque. <br> Gérez votre activité avec un logiciel de gestion et de communication au service de votre passion.",
+    descriptionSm:
+      "Pour les structures culturelles pratiquantes telles que les orchestres, les chorales, les compagnies de danse, théâtre et cirque.",
     buttonClass: "btn-artist",
     buttonClass: "btn-artist",
     image:
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_Artist-administrateur-Orchestre_d_harmonie.png",
       "/images/Home_logiciel/Logiciel_Opentalent_Artist-administrateur-Orchestre_d_harmonie.png",
@@ -135,6 +139,8 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     logo: "/images/logo/logiciels/Manager-noir.png",
     logo: "/images/logo/logiciels/Manager-noir.png",
     description:
     description:
       "La solution de mise en réseau des organisations culturelles.<br> Fédérations, confédérations et collectivités, utilisez une solution collaborative innovante et unique spécialement développée pour les réseaux culturels.",
       "La solution de mise en réseau des organisations culturelles.<br> Fédérations, confédérations et collectivités, utilisez une solution collaborative innovante et unique spécialement développée pour les réseaux culturels.",
+    descriptionSm:
+      "La solution de mise en réseau des organisations culturelles, telles que les fédérations, confédérations et collectivités.",
     buttonClass: "btn-manager",
     buttonClass: "btn-manager",
     image:
     image:
       "/images/Home_logiciel/Logiciel_Opentalent_Managerl-Administrateur_Federation.png",
       "/images/Home_logiciel/Logiciel_Opentalent_Managerl-Administrateur_Federation.png",
@@ -185,6 +191,11 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     width: 20rem;
     width: 20rem;
     margin-top: 10px;
     margin-top: 10px;
     margin-left: 6rem;
     margin-left: 6rem;
+
+    @media (max-width: 600px) {
+      width: 15rem;
+      margin-left: 1rem;
+    }
   }
   }
 
 
   .description {
   .description {
@@ -208,6 +219,11 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     width: 10rem;
     width: 10rem;
     height: 2.5rem;
     height: 2.5rem;
     margin-left: 7rem;
     margin-left: 7rem;
+
+    @media (max-width: 600px) {
+      width: 80%;
+      margin: 15px auto;
+    }
   }
   }
 
 
   .learn-more-btn :deep(.v-btn__append) {
   .learn-more-btn :deep(.v-btn__append) {
@@ -226,6 +242,17 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
   .btn-manager {
   .btn-manager {
     background: var(--manager-color-light);
     background: var(--manager-color-light);
   }
   }
+
+  @media (max-width: 1280px) {
+    padding-bottom: 48px;
+    min-height: 50%;
+
+    .description {
+      width: 80%;
+      margin-left: auto;
+      margin-right: auto;
+    }
+  }
 }
 }
 
 
 /* ============= Colonne droite - Illustration ===============  */
 /* ============= Colonne droite - Illustration ===============  */
@@ -287,5 +314,17 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
     height: 35rem;
     height: 35rem;
     right: 5rem;
     right: 5rem;
   }
   }
+
+  @media (max-width: 1280px) {
+    .background-rectangle {
+      top: 60%;
+      height: 14rem;
+    }
+
+    .image {
+      height: 20rem;
+      right: 0;
+    }
+  }
 }
 }
 </style>
 </style>

+ 68 - 40
components/Home/EventAgenda.vue

@@ -11,30 +11,29 @@ Section "Agenda" de la page d'accueil
         </h3>
         </h3>
       </div>
       </div>
 
 
-      <v-row justify="center">
-        <div class="btn-container">
-          <v-col cols="12" md="6">
-            <AgendaLink href="/">
-              <v-btn
-                append-icon="fas fa-arrow-right"
-                class="btn-event"
-              >
-                Découvrir l'agenda
-              </v-btn>
-            </AgendaLink>
-          </v-col>
+      <v-row justify="center" class="btn-container">
+        <v-col cols="12" lg="6">
+          <AgendaLink href="/">
+            <v-btn
+              append-icon="fas fa-arrow-right"
+              class="btn-event"
+            >
+              Découvrir l'agenda
+            </v-btn>
+          </AgendaLink>
+        </v-col>
 
 
-          <v-col cols="12" md="6">
-            <AgendaLink href="/annuaire">
-              <v-btn
-                append-icon="fas fa-arrow-right"
-                class="btn-event"
-              >
-                Découvrir l’annuaire
-              </v-btn>
-            </AgendaLink>
-          </v-col>
-        </div>
+        <v-col cols="12" lg="6">
+          <AgendaLink href="/annuaire">
+            <v-btn
+              append-icon="fas fa-arrow-right"
+              :variant="lgAndUp ? 'default' : 'outlined'"
+              class="btn-event btn-annuaire"
+            >
+              Découvrir l’annuaire
+            </v-btn>
+          </AgendaLink>
+        </v-col>
       </v-row>
       </v-row>
     </div>
     </div>
   </LayoutContainer>
   </LayoutContainer>
@@ -43,24 +42,22 @@ Section "Agenda" de la page d'accueil
 <script setup>
 <script setup>
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 import AgendaLink from "~/components/Common/AgendaLink.vue";
 import AgendaLink from "~/components/Common/AgendaLink.vue";
-const { mdAndDown } = useDisplay();
+const { lgAndUp } = useDisplay();
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
 
 
-@media (min-width: 600px) {
-  .container {
-    height: 35rem;
-    background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)),
-    linear-gradient(
-      180deg,
-      rgba(14, 45, 50, 0.04) 0%,
-      rgba(14, 45, 50, 0.2) 100%
-    ),
-    linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)),
-    url("/images/eventAgenda/eventAgenda.jpg") no-repeat center 60%;
-    background-size: cover;
-  }
+.container {
+  height: 35rem;
+  background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)),
+  linear-gradient(
+    180deg,
+    rgba(14, 45, 50, 0.04) 0%,
+    rgba(14, 45, 50, 0.2) 100%
+  ),
+  linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)),
+  url("/images/eventAgenda/eventAgenda.jpg") no-repeat center 60%;
+  background-size: cover;
 }
 }
 
 
 h3 {
 h3 {
@@ -73,6 +70,13 @@ h3 {
   margin-top: 4rem;
   margin-top: 4rem;
   color: var(--on-primary-color);
   color: var(--on-primary-color);
   width: 45rem;
   width: 45rem;
+
+  @media (max-width: 600px) {
+    font-size: 2rem;
+    margin-right: auto;
+    margin-left: auto;
+    max-width: 80%;
+  }
 }
 }
 
 
 .btn-container {
 .btn-container {
@@ -80,11 +84,20 @@ h3 {
   align-items: center;
   align-items: center;
   justify-content: center;
   justify-content: center;
   padding: 0 20rem;
   padding: 0 20rem;
-}
 
 
-@media (max-width: 960px) {
-  .btn-container {
+  @media (max-width: 1240px) {
     padding: 0 5rem;
     padding: 0 5rem;
+    margin-top: 48px;
+
+    a {
+      display: block;
+      width: 80%;
+      margin: 5px auto;
+    }
+  }
+
+  @media (max-width: 1600px) {
+    padding: 0 5%;
   }
   }
 }
 }
 
 
@@ -99,5 +112,20 @@ h3 {
   min-width: 20rem;
   min-width: 20rem;
   max-width: 20rem;
   max-width: 20rem;
   height: 3.5rem;
   height: 3.5rem;
+
+  @media (max-width: 1240px) {
+    width: 100%;
+    max-width: 100%;
+    margin: 0;
+    min-width: 0;
+  }
+}
+
+.btn-annuaire {
+  @media (max-width: 1240px) {
+    color: var(--on-primary-color);
+    font-weight: 600;
+    border: solid 2px var(--on-primary-color);
+  }
 }
 }
 </style>
 </style>

+ 15 - 1
components/Home/Help.vue

@@ -76,6 +76,14 @@ Section "Besoin d'aide" de la page d'accueil
     padding: 60px;
     padding: 60px;
     justify-content: center;
     justify-content: center;
     align-items: self-start;
     align-items: self-start;
+
+    @media (max-width: 600px) {
+      padding: 12px;
+
+      * {
+        max-width: 100%;
+      }
+    }
   }
   }
 }
 }
 
 
@@ -128,7 +136,12 @@ ul {
   margin-right: auto;
   margin-right: auto;
 }
 }
 
 
-@media (max-width: 960px) {
+@media (max-width: 1240px) {
+  .v-row {
+    width: 100%;
+    margin: 0;
+  }
+
   .v-img {
   .v-img {
     width: 40rem;
     width: 40rem;
     margin-left: auto;
     margin-left: auto;
@@ -163,6 +176,7 @@ ul {
   .button-faq {
   .button-faq {
     margin-left: 3rem;
     margin-left: 3rem;
     margin-top: 2rem;
     margin-top: 2rem;
+    width: 80%;
   }
   }
 }
 }
 </style>
 </style>

+ 71 - 25
components/Home/Promotion.vue

@@ -48,7 +48,7 @@
       </v-col>
       </v-col>
     </v-row>
     </v-row>
 
 
-    <section class="outil">
+    <v-row class="outil">
       <v-row>
       <v-row>
         <v-col>
         <v-col>
           <h3>
           <h3>
@@ -61,41 +61,61 @@
       <v-row class="pictos">
       <v-row class="pictos">
         <v-col cols="12" lg="6">
         <v-col cols="12" lg="6">
           <v-row>
           <v-row>
-            <img src="/images/pictoHome/network.svg" alt="network" />
-            <p>
-              Logiciel de gestion et communication en ligne
-            </p>
+            <v-col cols="3">
+              <img src="/images/pictoHome/network.svg" alt="network" />
+            </v-col>
+            <v-col cols="9">
+              <p>
+                Logiciel de gestion et communication en ligne
+              </p>
+            </v-col>
           </v-row>
           </v-row>
 
 
           <v-row>
           <v-row>
-            <img src="/images/pictoHome/website.svg" alt="website" />
-            <p>
-              Site web intégré et simple d’usage
-            </p>
+            <v-col cols="3">
+              <img src="/images/pictoHome/website.svg" alt="website" />
+            </v-col>
+            <v-col cols="9">
+              <p>
+                Site web intégré et simple d’usage
+              </p>
+            </v-col>
           </v-row>
           </v-row>
         </v-col>
         </v-col>
 
 
         <v-col cols="12" lg="6">
         <v-col cols="12" lg="6">
           <v-row>
           <v-row>
-            <img src="/images/pictoHome/visibility.svg" alt="visibility" />
-            <p>
-              Augmentez votre visibilité avec l'agenda culturel
-            </p>
+            <v-col cols="3">
+              <img src="/images/pictoHome/visibility.svg" alt="visibility" />
+            </v-col>
+            <v-col cols="9">
+              <p>
+                Augmentez votre visibilité avec l'agenda culturel
+              </p>
+            </v-col>
           </v-row>
           </v-row>
 
 
           <v-row>
           <v-row>
-            <img src="/images/pictoHome/communication.svg" alt="communication" />
-            <p>
-              Communiquez en réseau
-            </p>
+            <v-col cols="3">
+              <img src="/images/pictoHome/communication.svg" alt="communication" />
+            </v-col>
+            <v-col cols="9">
+              <p>
+                Communiquez en réseau
+              </p>
+            </v-col>
           </v-row>
           </v-row>
         </v-col>
         </v-col>
       </v-row>
       </v-row>
-    </section>
+    </v-row>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
+
+import { useDisplay } from "vuetify";
+
+const { mdAndUp } = useDisplay()
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
@@ -134,6 +154,10 @@
   }
   }
 
 
   @media (max-width: 960px) {
   @media (max-width: 960px) {
+    >.v-col {
+      margin-bottom: 0;
+    }
+
     .text-block {
     .text-block {
       font-weight: 500;
       font-weight: 500;
       font-size: 2rem;
       font-size: 2rem;
@@ -151,8 +175,6 @@
 }
 }
 
 
 .v-row.demo {
 .v-row.demo {
-  margin-bottom: -28rem;
-
   .screen {
   .screen {
     width: 900px;
     width: 900px;
     object-fit: cover;
     object-fit: cover;
@@ -163,9 +185,12 @@
     bottom: 30rem;
     bottom: 30rem;
   }
   }
 
 
-  @media (max-width: 960px) {
+  @media (max-width: 1280px) {
     .screen {
     .screen {
+      margin-top: -12px;
+      bottom: 0;
       width: 100%;
       width: 100%;
+      border-radius: 0;
     }
     }
   }
   }
 
 
@@ -187,9 +212,15 @@
   }
   }
 }
 }
 
 
-section.outil {
+.outil {
   margin-bottom: 36px;
   margin-bottom: 36px;
 
 
+  @media (max-width: 600px) {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+  }
+
   h3 {
   h3 {
     color: var(--primary-color);
     color: var(--primary-color);
     font-size: 2rem;
     font-size: 2rem;
@@ -200,16 +231,25 @@ section.outil {
 
 
   .pictos {
   .pictos {
     .v-row {
     .v-row {
-      border-bottom: solid 1px var(--on-primary-color-alt);
+      border-bottom: solid 2px var(--on-neutral-color-extra-light);
       margin: 0;
       margin: 0;
       height: 100px;
       height: 100px;
       display: flex;
       display: flex;
       align-items: center;
       align-items: center;
       justify-content: center;
       justify-content: center;
+
+      @media (max-width: 600px) {
+        width: 90%;
+      }
     }
     }
 
 
-    .v-row:first-child {
-      border-top: solid 1px var(--on-primary-color-alt);
+    .v-col:first-child .v-row:first-child, .v-col-12:first-child .v-row:first-child {
+      border-top: solid 2px var(--on-neutral-color-extra-light);
+    }
+
+    >.v-col-12 {
+      padding-top : 0;
+      padding-bottom : 0;
     }
     }
 
 
     img {
     img {
@@ -223,8 +263,14 @@ section.outil {
       font-size: 22px;
       font-size: 22px;
       line-height: 26px;
       line-height: 26px;
       width: 25rem;
       width: 25rem;
+      max-width: 100%;
       color: var(--primary-color);
       color: var(--primary-color);
       margin-bottom: 1rem;
       margin-bottom: 1rem;
+
+      @media (max-width: 600px) {
+        width: 90%;
+        margin-bottom: 0;
+      }
     }
     }
   }
   }
 }
 }

+ 11 - 5
components/Home/Reviews.vue

@@ -11,7 +11,7 @@
     </div>
     </div>
 
 
     <!-- Ecrans larges -->
     <!-- Ecrans larges -->
-    <div v-if="mdAndUp" class="container-2">
+    <div v-if="lgAndUp" class="container-2">
 
 
       <!-- Partie 1 : Avis clients -->
       <!-- Partie 1 : Avis clients -->
       <v-row justify="center">
       <v-row justify="center">
@@ -134,7 +134,7 @@
         </div>
         </div>
       </v-row>
       </v-row>
 
 
-      <!-- Partie 1 : Carrousel logos clients -->
+      <!-- Partie 2 : Carrousel logos clients -->
       <div class="carousel-clients-container">
       <div class="carousel-clients-container">
         <CommonCarouselClients :items="items" />
         <CommonCarouselClients :items="items" />
       </div>
       </div>
@@ -190,6 +190,8 @@
           />
           />
         </v-col>
         </v-col>
       </v-row>
       </v-row>
+
+      <CommonCarouselClients :items="items" class="alt-theme"/>
     </div>
     </div>
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
@@ -200,7 +202,7 @@ import "vue3-carousel/dist/carousel.css";
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 import type { Review } from "~/types/interface";
 import type { Review } from "~/types/interface";
 
 
-const { mdAndUp } = useDisplay();
+const { lgAndUp } = useDisplay();
 
 
 const reviewCarousel: Ref<typeof Carousel | null> = ref(null);
 const reviewCarousel: Ref<typeof Carousel | null> = ref(null);
 
 
@@ -266,7 +268,10 @@ const items: Ref<Array<{ src: string }>> = ref([
 
 
 .container-1 {
 .container-1 {
   background-color: var(--neutral-color);
   background-color: var(--neutral-color);
-  height: 22rem;
+
+  @media (min-width: 1240px) {
+    height: 22rem;
+  }
 
 
   h4 {
   h4 {
     font-size: 2rem;
     font-size: 2rem;
@@ -362,11 +367,12 @@ const items: Ref<Array<{ src: string }>> = ref([
 
 
 .container-sm {
 .container-sm {
   .v-card {
   .v-card {
-    width: 300px;
+    width: 70%;
     display: flex;
     display: flex;
     flex-direction: column;
     flex-direction: column;
     justify-content: center;
     justify-content: center;
     align-items: center;
     align-items: center;
+    padding: 16px;
   }
   }
 
 
   .carousel-controls {
   .carousel-controls {

+ 91 - 33
components/Home/Solution.vue

@@ -16,7 +16,8 @@ Section "Solutions" de la page d'accueil
       <v-col
       <v-col
         v-for="(solution, index) in solutions"
         v-for="(solution, index) in solutions"
         :key="index"
         :key="index"
-        cols="4"
+        cols="12"
+        lg="4"
       >
       >
         <v-container>
         <v-container>
           <div class="d-flex justify-center align-left flex-column">
           <div class="d-flex justify-center align-left flex-column">
@@ -38,35 +39,37 @@ Section "Solutions" de la page d'accueil
               <v-row>
               <v-row>
                 <div :class="['image-container', solution.class]" >
                 <div :class="['image-container', solution.class]" >
                   <v-img :src="solution.image" />
                   <v-img :src="solution.image" />
-                  <v-btn>Découvrir</v-btn>
+                  <v-btn v-if="xlAndUp">Découvrir</v-btn>
                 </div>
                 </div>
               </v-row>
               </v-row>
             </nuxt-link>
             </nuxt-link>
 
 
-            <v-row>
-              <div class="details">
-                <v-col cols="6">
-                  <ul>
-                    <li
-                      v-for="(sol, i) in solution.solutions.slice(0, 4)"
-                      :key="i"
-                    >
-                      {{ sol }}
-                    </li>
-                  </ul>
-                </v-col>
-
-                <v-col cols="6">
-                  <ul>
-                    <li
-                      v-for="(sol, i) in solution.solutions.slice(4)"
-                      :key="i"
-                    >
-                      {{ sol }}
-                    </li>
-                  </ul>
-                </v-col>
-              </div>
+            <v-row class="details">
+              <v-col cols="12" md="6">
+                <ul>
+                  <li
+                    v-for="(sol, i) in solution.solutions.slice(0, 4)"
+                    :key="i"
+                  >
+                    {{ sol }}
+                  </li>
+                </ul>
+              </v-col>
+
+              <v-col cols="12" md="6">
+                <ul>
+                  <li
+                    v-for="(sol, i) in solution.solutions.slice(4)"
+                    :key="i"
+                  >
+                    {{ sol }}
+                  </li>
+                </ul>
+              </v-col>
+            </v-row>
+
+            <v-row v-if="lgAndDown">
+              <v-btn :to="solution.link">Découvrir</v-btn>
             </v-row>
             </v-row>
           </div>
           </div>
         </v-container>
         </v-container>
@@ -86,6 +89,9 @@ Section "Solutions" de la page d'accueil
 <script setup lang="ts">
 <script setup lang="ts">
 
 
 import type { SolutionItem } from "~/types/interface";
 import type { SolutionItem } from "~/types/interface";
+import { useDisplay } from "vuetify";
+
+const { xlAndUp, lgAndDown } = useDisplay()
 
 
 const solutions: Array<SolutionItem> = [
 const solutions: Array<SolutionItem> = [
   {
   {
@@ -148,6 +154,11 @@ const solutions: Array<SolutionItem> = [
   margin-bottom: 15rem;
   margin-bottom: 15rem;
   height: 36rem;
   height: 36rem;
   position: relative;
   position: relative;
+
+  @media (max-width: 1240px) {
+    height: 100%;
+    margin-bottom: 0;
+  }
 }
 }
 
 
 h4 {
 h4 {
@@ -157,6 +168,16 @@ h4 {
   text-align: center;
   text-align: center;
   color: var(--on-primary-color);
   color: var(--on-primary-color);
   width: 100%;
   width: 100%;
+
+  @media (max-width: 1240px) {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+  }
+
+  @media (max-width: 600px) {
+    font-size: 1.6rem;
+  }
 }
 }
 
 
 @media (min-width: 600px) {
 @media (min-width: 600px) {
@@ -166,7 +187,6 @@ h4 {
 }
 }
 
 
 .v-row.solutions {
 .v-row.solutions {
-
   small {
   small {
     font-weight: 600;
     font-weight: 600;
     font-size: 10px;
     font-size: 10px;
@@ -216,6 +236,12 @@ h4 {
       right: 0;
       right: 0;
       width: 200px;
       width: 200px;
     }
     }
+
+    @media (max-width: 1240px) {
+      display: flex;
+      flex-direction: column;
+      width: 100%;
+    }
   }
   }
 
 
   .image-container::before {
   .image-container::before {
@@ -232,16 +258,23 @@ h4 {
   }
   }
 
 
   .v-btn {
   .v-btn {
-    position: absolute;
-    z-index: 100;
-    bottom: 40%;
-    left: 50%;
-    transform: translateX(-50%);
-    display: none;
     font-size: 0.8rem;
     font-size: 0.8rem;
     border-radius: 6px;
     border-radius: 6px;
     background: var(--secondary-color);
     background: var(--secondary-color);
     color: var(--on-primary-color);
     color: var(--on-primary-color);
+
+    @media (min-width: 1240px) {
+      position: absolute;
+      z-index: 100;
+      bottom: 40%;
+      transform: translateX(-50%);
+      display: none;
+    }
+
+    @media (max-width: 1240px) {
+      width: 90%;
+      margin: 24px auto;
+    }
   }
   }
 
 
   .image-container:hover .v-btn {
   .image-container:hover .v-btn {
@@ -291,7 +324,27 @@ h4 {
       margin-left: 1rem;
       margin-left: 1rem;
       line-height: 18px;
       line-height: 18px;
       color: var(--primary-color);
       color: var(--primary-color);
+
+      @media (max-width: 1240px) {
+        font-size: 1.1rem;
+        color: var(--on-primary-color);
+      }
     }
     }
+
+
+    @media (max-width: 600px) {
+      padding: 18px;
+
+      ul {
+        margin-top: 0;
+      }
+
+      .v-col-12 {
+        padding-top: 0;
+        padding-bottom: 0;
+      }
+    }
+
   }
   }
 }
 }
 
 
@@ -299,6 +352,11 @@ h4 {
   p {
   p {
     text-align: right;
     text-align: right;
     font-size: 12px;
     font-size: 12px;
+
+    @media (max-width: 1240px) {
+      font-size: 1.1rem;
+      color: var(--on-primary-color);
+    }
   }
   }
 }
 }
 </style>
 </style>

+ 19 - 4
components/JoinUs/MissionDetail.vue

@@ -35,7 +35,7 @@
           </LayoutUITitlePage>
           </LayoutUITitlePage>
 
 
           <v-row class="details blue-content my-6">
           <v-row class="details blue-content my-6">
-            <v-col cols="6">
+            <v-col cols="12" md="6">
               <v-row>
               <v-row>
                 <div>
                 <div>
                   Type de contrat :
                   Type de contrat :
@@ -51,7 +51,7 @@
               </v-row>
               </v-row>
             </v-col>
             </v-col>
 
 
-            <v-col cols="6">
+            <v-col cols="12" md="6">
               <v-row>
               <v-row>
                 <div>
                 <div>
                   Secteur d'activité : <b>{{ job.sector.join(', ') }}</b>
                   Secteur d'activité : <b>{{ job.sector.join(', ') }}</b>
@@ -87,7 +87,7 @@
             <p>
             <p>
               MOTS CLÉS
               MOTS CLÉS
             </p>
             </p>
-            <div>
+            <div v-if="mdAndUp">
               <p>PARTAGER</p>
               <p>PARTAGER</p>
             </div>
             </div>
           </v-row>
           </v-row>
@@ -98,9 +98,13 @@
                 {{ tag.name }}
                 {{ tag.name }}
               </span>
               </span>
             </p>
             </p>
+            <CommonShare v-if="mdAndUp" />
+          </v-row>
 
 
+          <div v-if="smAndDown">
+            <p>PARTAGER</p>
             <CommonShare />
             <CommonShare />
-          </v-row>
+          </div>
         </div>
         </div>
       </div>
       </div>
     </div>
     </div>
@@ -113,6 +117,9 @@ import "vue3-carousel/dist/carousel.css";
 import { useEntityFetch } from "~/composables/data/useEntityFetch";
 import { useEntityFetch } from "~/composables/data/useEntityFetch";
 import JobPosting from "~/models/Maestro/JobPosting";
 import JobPosting from "~/models/Maestro/JobPosting";
 import DateUtils from "~/services/utils/dateUtils";
 import DateUtils from "~/services/utils/dateUtils";
+import { useDisplay } from "vuetify";
+
+const { mdAndUp, smAndDown } = useDisplay()
 
 
 const route = useRoute();
 const route = useRoute();
 const { fetch } = useEntityFetch()
 const { fetch } = useEntityFetch()
@@ -146,6 +153,10 @@ const formatDate = (date: string) => {
     color: var(--on-secondary-color);
     color: var(--on-secondary-color);
     height: 10rem;
     height: 10rem;
 
 
+    @media (max-width: 600px) {
+      height: auto;
+    }
+
     .v-row {
     .v-row {
       width: 90%;
       width: 90%;
       margin-left: auto;
       margin-left: auto;
@@ -157,6 +168,10 @@ const formatDate = (date: string) => {
       font-weight: 500;
       font-weight: 500;
       font-size: 25px;
       font-size: 25px;
       line-height: 18px;
       line-height: 18px;
+
+      @media (max-width: 600px) {
+        font-size: 16px;
+      }
     }
     }
   }
   }
 
 

+ 34 - 3
components/JoinUs/Missions.vue

@@ -15,7 +15,7 @@
       :key="index"
       :key="index"
       class="mission-container"
       class="mission-container"
     >
     >
-      <v-row class="title-container">
+      <div class="title-container">
         <NuxtLink
         <NuxtLink
           :to="`/nous-rejoindre/${job.id}`"
           :to="`/nous-rejoindre/${job.id}`"
           class="title"
           class="title"
@@ -34,7 +34,7 @@
         >
         >
           En savoir plus
           En savoir plus
         </v-btn>
         </v-btn>
-      </v-row>
+      </div>
 
 
       <v-row class="location-container">
       <v-row class="location-container">
         <v-icon icon="fas fa-map-marker" />
         <v-icon icon="fas fa-map-marker" />
@@ -56,7 +56,7 @@
       </v-col>
       </v-col>
     </v-row>
     </v-row>
 
 
-    <v-row class="ml-6 mb-6">
+    <v-row class="mb-6">
       <v-col cols="12">
       <v-col cols="12">
         <p class="apply-now">
         <p class="apply-now">
           Nous sommes toujours à la recherche de nouveaux talents. N'hésitez pas
           Nous sommes toujours à la recherche de nouveaux talents. N'hésitez pas
@@ -182,6 +182,11 @@ const onFormSubmit = () => {
     height: 80px;
     height: 80px;
     padding: 10px 10px 10px 1px;
     padding: 10px 10px 10px 1px;
 
 
+    @media (max-width: 600px) {
+      flex-direction: column;
+      height: auto;
+    }
+
     .title {
     .title {
       font-weight: 600;
       font-weight: 600;
       font-size: 1.5rem;
       font-size: 1.5rem;
@@ -189,6 +194,13 @@ const onFormSubmit = () => {
       color: var(--on-primary-color);
       color: var(--on-primary-color);
       text-decoration: none;
       text-decoration: none;
       margin-left: 36px;
       margin-left: 36px;
+
+      @media (max-width: 600px) {
+        font-size: 1.2rem;
+        margin-left: auto;
+        margin-right: auto;
+        width: 90%;
+      }
     }
     }
 
 
     .star {
     .star {
@@ -202,6 +214,10 @@ const onFormSubmit = () => {
       margin-right: 8px;
       margin-right: 8px;
       display: flex;
       display: flex;
       align-items: center;
       align-items: center;
+
+      @media (max-width: 600px) {
+        margin: 12px auto;
+      }
     }
     }
   }
   }
 
 
@@ -221,6 +237,10 @@ const onFormSubmit = () => {
       margin-left: 10px;
       margin-left: 10px;
       font-size: 1.3rem;
       font-size: 1.3rem;
     }
     }
+
+    @media (max-width: 600px) {
+      margin: 0 auto 12px auto;
+    }
   }
   }
 }
 }
 
 
@@ -238,6 +258,11 @@ const onFormSubmit = () => {
   margin-left: auto;
   margin-left: auto;
   margin-right: auto;
   margin-right: auto;
   font-weight: 700;
   font-weight: 700;
+
+  @media (max-width: 600px) {
+    width: 80%;
+    margin: 12px auto;
+  }
 }
 }
 
 
 .apply-now {
 .apply-now {
@@ -248,6 +273,12 @@ const onFormSubmit = () => {
   line-height: 40px;
   line-height: 40px;
   color: var(--primary-color);
   color: var(--primary-color);
   margin-bottom: 2rem;
   margin-bottom: 2rem;
+  margin-left: 24px;
+
+  @media (max-width: 600px) {
+    max-width: 90%;
+    margin: 12px auto;
+  }
 }
 }
 
 
 .v-dialog {
 .v-dialog {

+ 63 - 9
components/Layout/FAQ.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="alt-theme main my-2">
   <div class="alt-theme main my-2">
-    <div class="d-flex flex-row">
-      <div class="d-flex flex-column">
+    <v-row>
+      <v-col cols="12" lg="6">
         <LayoutUISubTitle class="mt-12 ml-3">
         <LayoutUISubTitle class="mt-12 ml-3">
           Vous voulez tirer le meilleur de notre logiciel ?
           Vous voulez tirer le meilleur de notre logiciel ?
         </LayoutUISubTitle>
         </LayoutUISubTitle>
@@ -18,9 +18,9 @@
         >
         >
           Consulter notre FAQ
           Consulter notre FAQ
         </v-btn>
         </v-btn>
-      </div>
+      </v-col>
 
 
-      <div class="d-flex flex-column justify-center links">
+      <v-col cols="12" lg="6" class="links">
         <v-btn
         <v-btn
           href="https://ressources.opentalent.fr/pages/viewpage.action?pageId=75170564"
           href="https://ressources.opentalent.fr/pages/viewpage.action?pageId=75170564"
           target="_blank"
           target="_blank"
@@ -51,15 +51,16 @@
             </p>
             </p>
           </div>
           </div>
         </v-btn>
         </v-btn>
-      </div>
-    </div>
+      </v-col>
+    </v-row>
   </div>
   </div>
 </template>
 </template>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
-.flex-row {
+.v-row {
   position: relative;
   position: relative;
   z-index: 2;
   z-index: 2;
+  max-width: 100%;
 }
 }
 
 
 .main {
 .main {
@@ -94,6 +95,12 @@ h3 {
   margin-bottom: 3rem;
   margin-bottom: 3rem;
   font-size: 30px;
   font-size: 30px;
   font-weight: 400;
   font-weight: 400;
+
+  @media (max-width: 600px) {
+    width: 90%;
+    margin-right: auto;
+    margin-left: auto;
+  }
 }
 }
 
 
 .btn-faq {
 .btn-faq {
@@ -103,14 +110,33 @@ h3 {
   border-radius: 6px;
   border-radius: 6px;
   font-weight: 500;
   font-weight: 500;
   font-size: 0.8rem;
   font-size: 0.8rem;
-  z-index: 1;
+  z-index: 2;
   text-transform: none !important;
   text-transform: none !important;
   line-height: 1rem;
   line-height: 1rem;
+
+
+  @media (max-width: 600px) {
+    width: 90%;
+    margin-left: 5%;
+  }
 }
 }
 
 
 .links {
 .links {
+  justify-content: center;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+
+  @media (max-width: 1240px) {
+    flex-direction: row;
+  }
+
+  @media (max-width: 1240px) {
+    flex-direction: column;
+  }
+
   .v-btn {
   .v-btn {
-    z-index: 1;
+    z-index: 2;
     width: 23rem;
     width: 23rem;
     height: 5.5rem;
     height: 5.5rem;
     margin-left: 3rem;
     margin-left: 3rem;
@@ -145,6 +171,34 @@ h3 {
       white-space: normal !important;
       white-space: normal !important;
       text-align: left;
       text-align: left;
     }
     }
+
+    @media (max-width: 1240px) {
+      max-width: 40%;
+      margin: 12px 5%;
+      height: 8rem;
+
+      .v-btn__content>div {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+      }
+
+      .v-img {
+        margin-bottom: 6px;
+      }
+
+      p {
+        text-align: center;
+      }
+    }
+
+    @media (max-width: 600px) {
+      max-width: 90%;
+    }
   }
   }
+
+
 }
 }
 </style>
 </style>
+<script setup lang="ts">
+</script>

+ 36 - 30
components/Layout/Footer/Footer.vue

@@ -187,35 +187,35 @@
       </div>
       </div>
 
 
       <!-- Troisième section alt : version petits écrans -->
       <!-- Troisième section alt : version petits écrans -->
-<!--      <v-row v-if="mdAndDown">-->
-<!--        <v-col cols="12" >-->
-<!--          <div v-for="(item, index) in footerLinks" :key="index">-->
-<!--            <v-container>-->
-<!--              <div class="section" @click="toggleSection(index)">-->
-<!--                <div class="d-flex flex-row justify-space-between">-->
-<!--                  {{ item.label }}-->
-
-<!--                  <v-icon-->
-<!--                    :icon="isActive(index) ? 'fas fa-chevron-up' : 'fas fa-chevron-down'"-->
-<!--                  />-->
-<!--                </div>-->
-
-<!--                <div-->
-<!--                  v-show="isActive(index)"-->
-<!--                  v-for="(sublink, sublinkIndex) in item.sublink"-->
-<!--                  :key="sublinkIndex"-->
-<!--                  class="mt-3"-->
-<!--                >-->
-<!--                  <nuxt-link :href="sublink.link">-->
-<!--                    {{ sublink.label }}-->
-<!--                  </nuxt-link>-->
-<!--                </div>-->
-<!--              </div>-->
-<!--            </v-container>-->
-
-<!--          </div>-->
-<!--        </v-col>-->
-<!--      </v-row>-->
+      <v-row v-if="mdAndDown">
+        <v-col cols="12" >
+          <div v-for="(item, index) in footerLinks" :key="index">
+            <v-container>
+              <div class="section" @click="toggleSection(index)">
+                <div class="d-flex flex-row justify-space-between">
+                  {{ item.label }}
+
+                  <v-icon
+                    :icon="isActive(index) ? 'fas fa-chevron-up' : 'fas fa-chevron-down'"
+                  />
+                </div>
+
+                <div
+                  v-show="isActive(index)"
+                  v-for="(sublink, sublinkIndex) in item.sublink"
+                  :key="sublinkIndex"
+                  class="mt-3"
+                >
+                  <nuxt-link :href="sublink.link">
+                    {{ sublink.label }}
+                  </nuxt-link>
+                </div>
+              </div>
+            </v-container>
+
+          </div>
+        </v-col>
+      </v-row>
 
 
       <div class="footnotes">
       <div class="footnotes">
         <v-row justify="center">
         <v-row justify="center">
@@ -395,6 +395,12 @@ a {
     text-decoration: none;
     text-decoration: none;
     color: var(--on-primary-color);
     color: var(--on-primary-color);
     font-size: 0.8rem;
     font-size: 0.8rem;
+
+    @media (max-width: 600px) {
+      max-width: 90%;
+      text-align: center;
+
+    }
   }
   }
 }
 }
 
 
@@ -427,7 +433,7 @@ a {
     cursor: pointer;
     cursor: pointer;
 
 
     >div:first-child {
     >div:first-child {
-      border-bottom: 1px solid var(--on-secondary-color);
+      border-bottom: 1px solid var(--on-primary-color);
       padding-bottom: 6px;
       padding-bottom: 6px;
       text-transform: uppercase;
       text-transform: uppercase;
     }
     }

+ 37 - 3
components/Layout/Footer/Prefooter.vue

@@ -4,9 +4,9 @@ Première section du footer (galerie des logiciels)
 
 
 <template>
 <template>
   <footer>
   <footer>
-    <LayoutContainer>
+    <!-- Ecrans larges -->
+    <LayoutContainer v-if="lgAndUp">
       <v-row>
       <v-row>
-
         <v-col cols="4" class="text-center">
         <v-col cols="4" class="text-center">
           <nuxt-link to="/opentalent_artist">
           <nuxt-link to="/opentalent_artist">
             <v-img src="/images/logo/logiciels/Artist-noir.png"/>
             <v-img src="/images/logo/logiciels/Artist-noir.png"/>
@@ -42,10 +42,44 @@ Première section du footer (galerie des logiciels)
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </LayoutContainer>
     </LayoutContainer>
+
+    <!-- Petits écrans -->
+    <LayoutContainer v-else>
+      <v-row class="justify-center">
+        <v-col cols="3" class="border-right">
+          <nuxt-link to="/opentalent_artist">
+            <v-img src="/images/logo/logiciels/&_Jaune.png"/>
+          </nuxt-link>
+        </v-col>
+
+        <v-col cols="1">
+          <v-divider :vertical="true" />
+        </v-col>
+
+        <v-col cols="3">
+          <nuxt-link to="/opentalent_school">
+            <v-img src="/images/logo/logiciels/&_Bleu.png"/>
+          </nuxt-link>
+        </v-col>
+
+        <v-col cols="1">
+          <v-divider :vertical="true" />
+        </v-col>
+
+        <v-col cols="3">
+          <nuxt-link to="/opentalent_manager">
+            <v-img src="/images/logo/logiciels/&_Rouge.png"/>
+          </nuxt-link>
+        </v-col>
+      </v-row>
+    </LayoutContainer>
   </footer>
   </footer>
 </template>
 </template>
 
 
-<script setup>
+<script setup lang="ts">
+import { useDisplay } from "vuetify";
+
+const { lgAndUp } = useDisplay()
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 23 - 7
components/Layout/Footer/Solutions.vue

@@ -17,13 +17,13 @@
         v-if="showArtist"
         v-if="showArtist"
         class="row-artist"
         class="row-artist"
       >
       >
-        <v-col cols="2">
+        <v-col cols="6" md="2">
           <NuxtLink to="/opentalent_artist">
           <NuxtLink to="/opentalent_artist">
             <v-img src="/images/logo/logiciels/Artist-noir.png" class="logo" />
             <v-img src="/images/logo/logiciels/Artist-noir.png" class="logo" />
           </NuxtLink>
           </NuxtLink>
         </v-col>
         </v-col>
 
 
-        <v-col cols="10">
+        <v-col cols="6" md="10">
           <!-- list v-chip-->
           <!-- list v-chip-->
           <v-chip-group column disabled>
           <v-chip-group column disabled>
             <v-chip class="ma-2 chip-custom" label>
             <v-chip class="ma-2 chip-custom" label>
@@ -49,13 +49,13 @@
         v-if="showManager"
         v-if="showManager"
         class="row-manager"
         class="row-manager"
       >
       >
-        <v-col cols="2">
+        <v-col cols="6" md="2">
           <NuxtLink to="/opentalent_manager">
           <NuxtLink to="/opentalent_manager">
           <v-img src="/images/logo/logiciels/Manager-noir.png" class="logo" />
           <v-img src="/images/logo/logiciels/Manager-noir.png" class="logo" />
         </NuxtLink>
         </NuxtLink>
         </v-col>
         </v-col>
 
 
-        <v-col cols="10">
+        <v-col cols="6" md="10">
           <!-- list v-chip-->
           <!-- list v-chip-->
           <v-chip-group column disabled>
           <v-chip-group column disabled>
             <v-chip class="ma-2 chip-custom" color="primary" label>
             <v-chip class="ma-2 chip-custom" color="primary" label>
@@ -78,13 +78,13 @@
         v-if="showSchool"
         v-if="showSchool"
         class="row-school"
         class="row-school"
       >
       >
-        <v-col cols="2">
+        <v-col cols="6" md="2">
           <NuxtLink to="/opentalent_school">
           <NuxtLink to="/opentalent_school">
             <v-img src="/images/logo/logiciels/School-noir.png" class="logo" />
             <v-img src="/images/logo/logiciels/School-noir.png" class="logo" />
           </NuxtLink>
           </NuxtLink>
         </v-col>
         </v-col>
 
 
-        <v-col cols="10">
+        <v-col cols="6" md="10">
           <!-- list v-chip-->
           <!-- list v-chip-->
           <v-chip-group column disabled>
           <v-chip-group column disabled>
             <v-chip class="ma-2 chip-custom" label>
             <v-chip class="ma-2 chip-custom" label>
@@ -138,6 +138,11 @@ const props = defineProps({
 <style scoped lang="scss">
 <style scoped lang="scss">
 .chip-detail {
 .chip-detail {
   color: var(--on-neutral-color);
   color: var(--on-neutral-color);
+
+  @media (max-width: 600px) {
+    width: 100%;
+    text-align: center;
+  }
 }
 }
 
 
 .chip-custom {
 .chip-custom {
@@ -147,12 +152,23 @@ const props = defineProps({
   border-radius: 3rem;
   border-radius: 3rem;
   text-transform: uppercase;
   text-transform: uppercase;
   font-weight: 500;
   font-weight: 500;
-  font-size: 10px;
   line-height: 16px;
   line-height: 16px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   text-align: center;
   text-align: center;
   letter-spacing: 0.2em;
   letter-spacing: 0.2em;
+
+  @media (max-width: 600px) {
+    font-size: 10px !important;
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+    text-align: center;
+
+    :deep(.v-chip__content) {
+      width: 100%;
+    }
+  }
 }
 }
 
 
 .row-artist,
 .row-artist,

+ 12 - 228
components/Layout/Navigation.vue

@@ -2,128 +2,25 @@
 Menu Navigation
 Menu Navigation
 -->
 -->
 <template>
 <template>
-  <!-- Navigation (écran large) -->
-  <div v-if="mdAndUp" v-intersect="onIntersect">
-    <LayoutNavigationTopbar />
-
-    <v-row class="navigation-lg" style="margin-top: 0 !important;">
-      <!-- Logo Opentalent -->
-      <v-col cols="2">
-        <nuxt-link to="/">
-          <v-img class="logo" src="/images/logo/navigation-logo.png" />
-        </nuxt-link>
-      </v-col>
-
-      <!-- Menu principal -->
-      <v-col cols="10" class="pl-6">
-        <v-menu
-          v-for="item in menu"
-          :key="item.label"
-          :open-on-hover="true"
-        >
-          <template v-slot:activator="{ props }">
-            <nuxt-link
-              v-bind="props"
-              class="menuItem first-level"
-              :to="item.to"
-            >
-              {{ item.label }}
-            </nuxt-link>
-          </template>
-
-          <v-list
-            v-if="item.children?.length > 0"
-            class="menu-list"
-          >
-            <v-list-item
-              v-for="child in item.children"
-              :key="child.label"
-              :to="child.to"
-              class="menuItem"
-            >
-              <v-list-item-title>{{ child.label }}</v-list-item-title>
-            </v-list-item>
-          </v-list>
-        </v-menu>
-      </v-col>
-    </v-row>
+  <div v-intersect="onIntersect">
+    <!-- Navigation (écran large) -->
+    <div v-if="lgAndUp">
+      <LayoutNavigationLg :menu="menu" />
+    </div>
+
+    <!-- Navigation (petit écran) -->
+    <div v-else>
+      <LayoutNavigationMd :menu="menu" />
+    </div>
   </div>
   </div>
-
-  <!-- Navigation (petit écran) -->
-  <v-app
-    v-else
-    class="navigation-sm"
-  >
-    <!-- Top bar -->
-    <v-app-bar app>
-      <v-app-bar-nav-icon
-        @click="toggleMenu"
-      />
-
-      <nuxt-link to="/">
-        <v-img class="logo-md" src="/images/logo/navigation-logo.png" />
-      </nuxt-link>
-
-      <nuxt-link
-        to="https://admin.opentalent.fr/#/login/"
-        style="text-decoration: none"
-      >
-        <v-btn text>
-          <v-icon left class="fas fa-user icon"></v-icon>
-        </v-btn>
-      </nuxt-link>
-
-      <v-btn text>
-        <v-icon left class="fas fa-phone icon"></v-icon>
-      </v-btn>
-
-      <AgendaLink href="/agenda-culturel" style="text-decoration: none">
-        <v-btn text>
-          <v-icon left class="fas fa-calendar icon"></v-icon>
-        </v-btn>
-      </AgendaLink>
-    </v-app-bar>
-
-    <!-- Tiroir de navigation principal -->
-    <v-navigation-drawer
-      v-model="isMenuOpen"
-      app
-      temporary
-    >
-      <v-list nav dense>
-        <v-list-item
-          v-if="isSubMenu"
-          class="menuItem back-item"
-          @click="onBackItemClick"
-        >
-          <v-list-item-title>
-            <v-icon icon="fas fa-caret-left" class="mr-1"/> Retour
-          </v-list-item-title>
-        </v-list-item>
-
-        <v-list-item
-          v-for="(item, index) in activeMenu"
-          :key="item.label"
-          :to="item.to"
-          class="menuItem"
-          @click="onMenuItemClick(index, item)"
-        >
-          <v-list-item-title>
-            {{ item.label }}
-          </v-list-item-title>
-        </v-list-item>
-      </v-list>
-    </v-navigation-drawer>
-  </v-app>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 import type { MainMenuItem } from "~/types/interface";
 import type { MainMenuItem } from "~/types/interface";
-import AgendaLink from "~/components/Common/AgendaLink.vue";
-import Footer from "~/components/Layout/Footer/Footer.vue";
 import { useLayoutStore } from "~/stores/layoutStore";
 import { useLayoutStore } from "~/stores/layoutStore";
-const { mdAndUp } = useDisplay();
+
+const { lgAndUp } = useDisplay();
 
 
 const menu: Array<MainMenuItem> = [
 const menu: Array<MainMenuItem> = [
   {
   {
@@ -152,57 +49,6 @@ const menu: Array<MainMenuItem> = [
   { label: "Contact", to: "/nous-contacter" },
   { label: "Contact", to: "/nous-contacter" },
 ]
 ]
 
 
-// Menu dépliant (petit écran)
-const isMenuOpen: Ref<boolean> = ref(false);
-const toggleMenu = () => {
-  isMenuOpen.value = !isMenuOpen.value;
-};
-
-const activeMenuIndex: Ref<number | null> = ref(null)
-
-const activeMenu = computed(() =>
-  activeMenuIndex.value !== null ? menu[activeMenuIndex.value].children : menu
-)
-
-/**
- * Determines if the is active menu is a sub-menu .
- *
- * @function isSubMenu
- * @returns {boolean} - True if a sub-menu is active, otherwise false.
- */
-const isSubMenu = computed(() => activeMenuIndex.value !== null)
-
-/**
- * Handles the click event on a menu item.
- *
- * @param {number} index - The index of the clicked menu item.
- * @param {MainMenuItem} item - The clicked menu item.
- * @returns {void}
- */
-const onMenuItemClick = (index: number, item: MainMenuItem): void => {
-  if (!item.children) {
-    return
-  }
-  withAnimation(() => activeMenuIndex.value = index)
-}
-
-/**
- * Function to handle back button click event.
- */
-const onBackItemClick = (): void => {
-  withAnimation(() => activeMenuIndex.value = null)
-}
-
-/**
- * Déclenche une animation de changement de menu en fermant et rouvrant le drawer
- * @param callback
- */
-const withAnimation = (callback: () => void) => {
-  isMenuOpen.value = false
-  callback()
-  setTimeout(() => {isMenuOpen.value = true}, 85)
-}
-
 const layoutStore = useLayoutStore()
 const layoutStore = useLayoutStore()
 const onIntersect = (isIntersecting: boolean) => {
 const onIntersect = (isIntersecting: boolean) => {
   layoutStore.setIsHeaderVisible(isIntersecting)
   layoutStore.setIsHeaderVisible(isIntersecting)
@@ -212,66 +58,4 @@ const onIntersect = (isIntersecting: boolean) => {
 
 
 <style scoped>
 <style scoped>
 
 
-.logo {
-  height: 100px;
-  width: 300px;
-}
-
-.logo-md {
-  width: 150px;
-  height: 300px;
-}
-
-.icon {
-  color: var(--on-neutral-color);
-}
-
-.menuItem, .menuItem .v-list-item-title {
-  font-weight: 500;
-  font-size: 0.9rem;
-  letter-spacing: 0.1em;
-  text-transform: uppercase;
-  color: var(--primary-color);
-  cursor: pointer;
-  text-decoration: none !important;
-}
-
-/**
-  Navigation grands écrans
- */
-.navigation-lg {
-  display: flex;
-  align-items: center;
-  background-color: var(--neutral-color);
-
-  .menuItem  {
-    padding: 18px;
-  }
-
-  .menuItem.first-level {
-    font-size: 1.3rem;
-    margin-right: 1rem;
-    font-weight: 700;
-    letter-spacing: 0.05em;
-  }
-}
-
-/**
-  Navigation petits écrans
- */
-.navigation-sm {
-  background-color: var(--neutral-color);
-  position: fixed;
-  top: 0;
-}
-
-.back-item {
-  border-bottom: solid 1px var(--on-neutral-color-light);
-  border-radius: 0;
-
-  .v-list-item-title {
-    display: flex;
-    align-items: center;
-  }
-}
 </style>
 </style>

+ 97 - 0
components/Layout/Navigation/Lg.vue

@@ -0,0 +1,97 @@
+<!-- Barre de navigation (écran large) -->
+<template>
+  <div>
+    <LayoutNavigationTopbar />
+
+    <v-row class="navigation-lg" style="margin-top: 0 !important;">
+      <!-- Logo Opentalent -->
+      <v-col cols="2">
+        <nuxt-link to="/">
+          <v-img class="logo" src="/images/logo/navigation-logo.png" />
+        </nuxt-link>
+      </v-col>
+
+      <!-- Menu principal -->
+      <v-col cols="10" class="pl-6">
+        <v-menu
+          v-for="item in menu"
+          :key="item.label"
+          :open-on-hover="true"
+        >
+          <template v-slot:activator="{ props }">
+            <nuxt-link
+              v-bind="props"
+              class="menuItem first-level"
+              :to="item.to"
+            >
+              {{ item.label }}
+            </nuxt-link>
+          </template>
+
+          <v-list
+            v-if="item.children?.length! > 0"
+            class="menu-list"
+          >
+            <v-list-item
+              v-for="child in item.children"
+              :key="child.label"
+              :to="child.to"
+              class="menuItem"
+            >
+              <v-list-item-title>{{ child.label }}</v-list-item-title>
+            </v-list-item>
+          </v-list>
+        </v-menu>
+      </v-col>
+    </v-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+import type { PropType } from "@vue/runtime-core";
+import type { MainMenuItem } from "~/types/interface";
+
+const props = defineProps({
+  menu: {
+    type: Array as PropType<Array<MainMenuItem>>
+  }
+})
+</script>
+
+<style scoped lang="scss">
+.logo {
+  height: 100px;
+  width: 300px;
+}
+
+.icon {
+  color: var(--on-neutral-color);
+}
+
+.menuItem, .menuItem .v-list-item-title {
+  font-weight: 500;
+  font-size: 0.9rem;
+  letter-spacing: 0.1em;
+  text-transform: uppercase;
+  color: var(--primary-color);
+  cursor: pointer;
+  text-decoration: none !important;
+}
+
+.navigation-lg {
+  display: flex;
+  align-items: center;
+  background-color: var(--neutral-color);
+
+  .menuItem  {
+    padding: 18px;
+  }
+
+  .menuItem.first-level {
+    font-size: 1.3rem;
+    margin-right: 1rem;
+    font-weight: 700;
+    letter-spacing: 0.05em;
+  }
+}
+</style>

+ 179 - 0
components/Layout/Navigation/Md.vue

@@ -0,0 +1,179 @@
+<template>
+  <div class="app-container">
+    <v-app class="navigation-sm">
+      <!-- Top bar -->
+      <v-app-bar app>
+        <v-app-bar-nav-icon
+          @click="toggleMenu"
+        />
+
+        <nuxt-link to="/">
+          <v-img
+            class="logo-md"
+            :src="smAndUp ? '/images/logo/navigation-logo.png' : '/images/Opentalent_Griffe.png'"
+          />
+        </nuxt-link>
+
+        <v-spacer />
+
+        <div class="mx-4">
+          <v-btn
+            href="https://admin.opentalent.fr/#/login/"
+            icon="fas fa-user"
+            class="icon"
+          />
+
+          <v-btn
+            to="/nous-contacter"
+            icon="fas fa-phone"
+            class="icon"
+          />
+
+          <AgendaLink href="/agenda-culturel">
+            <v-btn
+              icon="fas fa-calendar"
+              class="icon"
+            />
+          </AgendaLink>
+        </div>
+      </v-app-bar>
+
+      <!-- Tiroir de navigation principal -->
+      <v-navigation-drawer
+        v-model="isMenuOpen"
+        app
+        temporary
+      >
+        <v-list nav dense>
+          <v-list-item
+            v-if="isSubMenu"
+            class="menuItem back-item"
+            @click="onBackItemClick"
+          >
+            <v-list-item-title>
+              <v-icon icon="fas fa-caret-left" class="mr-1"/> Retour
+            </v-list-item-title>
+          </v-list-item>
+
+          <v-list-item
+            v-for="(item, index) in activeMenu"
+            :key="item.label"
+            :to="item.to"
+            class="menuItem"
+            @click="onMenuItemClick(index, item)"
+          >
+            <v-list-item-title class="d-flex flex-row w-100">
+              <span class="flex-grow-1">
+                {{ item.label }}
+              </span>
+              <span v-if="item.children?.length! > 0">
+                <v-icon icon="fa fa-angle-right" />
+              </span>
+            </v-list-item-title>
+          </v-list-item>
+        </v-list>
+      </v-navigation-drawer>
+    </v-app>
+  </div>
+</template>
+
+<script setup lang="ts">
+import AgendaLink from "~/components/Common/AgendaLink.vue";
+import type { PropType } from "@vue/runtime-core";
+import type { MainMenuItem } from "~/types/interface";
+import { useDisplay } from "vuetify";
+
+const { smAndUp } = useDisplay()
+
+const props = defineProps({
+  menu: {
+    type: Array as PropType<Array<MainMenuItem>>
+  }
+})
+
+const isMenuOpen: Ref<boolean> = ref(false);
+const toggleMenu = () => {
+  isMenuOpen.value = !isMenuOpen.value;
+};
+
+const activeMenuIndex: Ref<number | null> = ref(null)
+
+const activeMenu = computed(() =>
+  activeMenuIndex.value !== null ? props.menu![activeMenuIndex.value].children : props.menu
+)
+
+/**
+ * Determines if the is active menu is a sub-menu .
+ *
+ * @function isSubMenu
+ * @returns {boolean} - True if a sub-menu is active, otherwise false.
+ */
+const isSubMenu = computed(() => activeMenuIndex.value !== null)
+
+/**
+ * Handles the click event on a menu item.
+ *
+ * @param {number} index - The index of the clicked menu item.
+ * @param {MainMenuItem} item - The clicked menu item.
+ * @returns {void}
+ */
+const onMenuItemClick = (index: number, item: MainMenuItem): void => {
+  if (!item.children) {
+    return
+  }
+  withAnimation(() => activeMenuIndex.value = index)
+}
+
+/**
+ * Function to handle back button click event.
+ */
+const onBackItemClick = (): void => {
+  withAnimation(() => activeMenuIndex.value = null)
+}
+
+/**
+ * Déclenche une animation de changement de menu en fermant et rouvrant le drawer
+ * @param callback
+ */
+const withAnimation = (callback: () => void) => {
+  isMenuOpen.value = false
+  callback()
+  setTimeout(() => {isMenuOpen.value = true}, 85)
+}
+</script>
+
+<style scoped lang="scss">
+.app-container {
+  height: 54px;
+}
+
+.navigation-sm {
+  background-color: var(--neutral-color);
+  position: fixed;
+  top: 0;
+  z-index: 1000;
+}
+
+.logo-md {
+  width: 150px;
+  height: 50px;
+
+  @media (max-width: 600px) {
+    width: 50px;
+  }
+}
+
+.back-item {
+  border-bottom: solid 1px var(--on-neutral-color-light);
+  border-radius: 0;
+
+  .v-list-item-title {
+    display: flex;
+    align-items: center;
+  }
+}
+
+.icon {
+  color: var(--on-neutral-color-light);
+}
+</style>

+ 7 - 0
components/Layout/UI/Title.vue

@@ -17,5 +17,12 @@
     font-size: 3rem;
     font-size: 3rem;
     line-height: 3rem;
     line-height: 3rem;
     margin-left: 1rem;
     margin-left: 1rem;
+
+    @media (max-width: 600px) {
+      font-size: 2rem;
+      line-height: 2rem;
+      margin-left: 12px;
+      width: 100%;
+    }
   }
   }
 </style>
 </style>

+ 27 - 2
components/Layout/UI/TitlePage.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="mb-4">
+  <div :class="'mb-4' + mdAndDown ? ' mt-12' : ''">
     <h1>
     <h1>
       <slot />
       <slot />
     </h1>
     </h1>
@@ -9,6 +9,12 @@
   </div>
   </div>
 </template>
 </template>
 
 
+<script setup lang="ts">
+import { useDisplay } from "vuetify";
+
+const { mdAndDown } = useDisplay()
+</script>
+
 <style scoped lang="scss">
 <style scoped lang="scss">
 h1, h2 {
 h1, h2 {
   text-align: center;
   text-align: center;
@@ -31,7 +37,7 @@ h2 {
   margin-right: 1rem;
   margin-right: 1rem;
 }
 }
 
 
-@media (max-width: 960px) {
+@media (max-width: 1240px) {
   h1 {
   h1 {
     font-size: 2rem;
     font-size: 2rem;
     line-height: 2.5rem;
     line-height: 2.5rem;
@@ -43,4 +49,23 @@ h2 {
   }
   }
 }
 }
 
 
+@media (max-width: 600px) {
+
+  h1, h2 {
+    width: 80%;
+    margin: auto
+  }
+
+  h1 {
+    font-size: 2rem;
+    line-height: 2.5rem;
+    margin-bottom: 18px;
+  }
+
+  h2 {
+    letter-spacing: 0.1rem;
+    font-size: 1.2rem;
+  }
+}
+
 </style>
 </style>

+ 61 - 100
components/Logiciels/Artist/Abonnement.vue

@@ -1,57 +1,16 @@
 <template>
 <template>
   <AnchoredSection id="subscription">
   <AnchoredSection id="subscription">
     <LayoutContainer>
     <LayoutContainer>
-      <v-row class="mt-12 center-90">
-        <v-col cols="4">
-          <LayoutUISubTitle>
-            S'abonner dès maintenant
-          </LayoutUISubTitle>
-
-          <div class="profile-circle">
-            <v-img src="/images/logo/logiciels/OT_Artist-BLANC.png" />
-          </div>
-
-          <div class="subscription-info">
-            <p class="mt-3 mb-6">
-              Pour vous abonner au logiciel, téléchargez et remplissez le
-              formulaire avant de nous le transmettre
-            </p>
-            <a
-              href="https://www.opentalent.fr/fileadmin/stockage/commercial/contrats/BDC_Artist_Public-23.pdf"
-              target="_blank"
-              class="download-button"
-              >
-              Télécharger le formulaire d'abonnement
-            </a>
-          </div>
+      <LayoutUISubTitle>
+        S'abonner dès maintenant
+      </LayoutUISubTitle>
 
 
-          <div class="subscription-steps">
-            <ol>
-              <li class="mt-6">
-                Téléchargez le formulaire
-              </li>
-              <li>
-                Complétez le formulaire
-              </li>
-              <li>
-                Joignez le règlement par chèque avec le formulaire à <br />
-                <p class="pa-3">
-                  2iOPENService <br />
-                  217 rue Raoul Follereau <br />
-                  74300 CLUSES
-                </p>
-              </li>
-              <li>
-                Après réception de votre formulaire d'adhésion et de votre
-                règlement, nous vous ouvrons le service choisi. Vous recevrez
-                alors un mail avec votre identifiant de connexion, votre mot de
-                passe, ainsi que l'URL de votre site internet.
-              </li>
-            </ol>
-          </div>
+      <v-row class="mt-12 center-90">
+        <v-col v-if="lgAndUp" cols="4" class="col-1">
+          <LogicielsArtistAbonnementToSubscribe />
         </v-col>
         </v-col>
 
 
-        <v-col cols="8">
+        <v-col cols="12" lg="8" class="col-2">
           <h3>
           <h3>
             Opentalent Artist, <br> la solution que vous attendiez...
             Opentalent Artist, <br> la solution que vous attendiez...
           </h3>
           </h3>
@@ -64,16 +23,26 @@
             vos besoins d'évolution !
             vos besoins d'évolution !
           </p>
           </p>
 
 
+          <LogicielsArtistAbonnementToSubscribe v-if="mdAndDown" />
+
           <p class="cmf">
           <p class="cmf">
-            Adhérents CMF ? <br> Et si on vous disait que vous l’aviez déjà ...
+            Adhérents CMF ? <br> Et si on vous disait que vous l’aviez déjà&nbsp;...
           </p>
           </p>
 
 
           <div class="border-row">
           <div class="border-row">
             <nuxt-link href="https://www.cmf-musique.org/" target="_blank">
             <nuxt-link href="https://www.cmf-musique.org/" target="_blank">
               <v-img
               <v-img
-                src="/images/logiciels/school/cmf_logo_orange.png"
+                v-if="lgAndUp"
+                src="/images/logo/logo-cmf-petit.png"
+                class="logo-cmf"
+              />
+              <v-img
+                v-else
+                src="/images/logo/logo-cmf.png"
                 class="logo-cmf"
                 class="logo-cmf"
               />
               />
+
+
             </nuxt-link>
             </nuxt-link>
 
 
             <div class="cmf-container">
             <div class="cmf-container">
@@ -95,69 +64,41 @@
 
 
 <script setup>
 <script setup>
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+import { useDisplay } from "vuetify";
+
+const { mdAndDown, lgAndUp } = useDisplay()
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
-.subscription-steps ol {
-  list-style-type: decimal;
-  padding-left: 2rem;
-  color: var(--on-neutral-color);
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 20px;
-  margin-left: 3rem;
-  width: 20rem;
-}
-
-.profile-circle {
-  top: 0.5rem;
-  width: 100px;
-  height: 100px;
-  position: relative;
-  background-color: var(--on-neutral-color);
-  border-radius: 50%;
-  margin-left: 11rem;
-}
 
 
-.subscription-info {
-  margin-left: 4rem;
-  background: var(--secondary-color);
-  border-radius: 10px;
-  height: 15rem;
-  width: 20rem;
-  padding: 1rem;
-  margin-top: 1rem;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  color: var(--on-secondary-color);
-  text-align: center;
-  font-size: 1rem;
-  font-weight: 300;
-  line-height: 18px;
-}
-
-.download-button {
-  font-weight: 700;
-  background-color: var(--on-neutral-color);
-  color: var(--neutral-color);
-  padding: 10px 20px;
-  border-radius: 5px;
-  text-decoration: none;
-  display: inline-block;
+@media (max-width: 1240px) {
+  .col-1 {
+    order: 2
+  }
+  .col-2 {
+    order: 1
+  }
 }
 }
 
 
 .solution {
 .solution {
   width: 45rem;
   width: 45rem;
-  text-align: justify
+  text-align: justify;
+
+  @media (max-width: 600px) {
+    width: 100%;
+  }
 }
 }
 
 
 h3 {
 h3 {
-  color: var(--primary-color);
+  color: var(--on-neutral-color);
   margin-bottom: 4rem;
   margin-bottom: 4rem;
   font-size: 42px;
   font-size: 42px;
   font-weight: 600;
   font-weight: 600;
   line-height: 42px;
   line-height: 42px;
+
+  @media (max-width: 600px) {
+    font-size: 32px;
+  }
 }
 }
 
 
 .cmf-container {
 .cmf-container {
@@ -165,12 +106,22 @@ h3 {
   margin-bottom: 4rem;
   margin-bottom: 4rem;
 
 
   p {
   p {
-    color: var(--on-primary-color);
+    color: var(--on-neutral-color);
     width: 25rem;
     width: 25rem;
     font-weight: 300;
     font-weight: 300;
     font-size: 16px;
     font-size: 16px;
     line-height: 20px;
     line-height: 20px;
     margin-left: 2rem;
     margin-left: 2rem;
+
+    @media (max-width: 1240px) {
+      margin-left: auto;
+      margin-right: auto;
+      width: 90%;
+    }
+  }
+
+  @media (max-width: 1240px) {
+    margin-top: 1rem;
   }
   }
 }
 }
 
 
@@ -181,15 +132,25 @@ h3 {
   background-size: contain;
   background-size: contain;
   width: 15rem;
   width: 15rem;
   height: 10rem;
   height: 10rem;
+
+  @media (max-width: 1240px) {
+    margin-left: auto;
+    margin-right: auto;
+    width: 90%;
+  }
 }
 }
 
 
 .cmf {
 .cmf {
   margin-top: 3rem;
   margin-top: 3rem;
   margin-bottom: 2rem;
   margin-bottom: 2rem;
-  color: var(--primary-color);
+  color: var(--on-neutral-color);
   width: 40rem;
   width: 40rem;
   font-size: 34px;
   font-size: 34px;
   font-weight: 400;
   font-weight: 400;
   line-height: 38px;
   line-height: 38px;
+
+  @media (max-width: 600px) {
+    width: 100%;
+  }
 }
 }
 </style>
 </style>

+ 125 - 0
components/Logiciels/Artist/Abonnement/ToSubscribe.vue

@@ -0,0 +1,125 @@
+<template>
+  <div class="profile-circle">
+    <v-img src="/images/logo/logiciels/OT_Artist-BLANC.png" />
+  </div>
+
+  <div class="subscription-info">
+    <p class="mt-3 mb-6">
+      Pour vous abonner au logiciel, téléchargez et remplissez le
+      formulaire avant de nous le transmettre
+    </p>
+    <a
+      href="https://www.opentalent.fr/fileadmin/stockage/commercial/contrats/BDC_Artist_Public-23.pdf"
+      target="_blank"
+      class="download-button"
+    >
+      Télécharger le formulaire d'abonnement
+    </a>
+  </div>
+
+  <div class="subscription-steps">
+    <ol>
+      <li class="mt-6">
+        Téléchargez le formulaire
+      </li>
+      <li>
+        Complétez le formulaire
+      </li>
+      <li>
+        Joignez le règlement par chèque avec le formulaire à <br />
+        <p class="pa-3">
+          2iOPENService <br />
+          217 rue Raoul Follereau <br />
+          74300 CLUSES
+        </p>
+      </li>
+      <li>
+        Après réception de votre formulaire d'adhésion et de votre
+        règlement, nous vous ouvrons le service choisi. Vous recevrez
+        alors un mail avec votre identifiant de connexion, votre mot de
+        passe, ainsi que l'URL de votre site internet.
+      </li>
+    </ol>
+  </div>
+</template>
+
+<script setup lang="ts">
+
+</script>
+
+<style scoped lang="scss">
+
+.profile-circle {
+  top: 3rem;
+  width: 100px;
+  height: 100px;
+  position: relative;
+  background-color: var(--on-neutral-color);
+  border-radius: 50%;
+  margin-left: 11rem;
+
+  @media (max-width: 1240px) {
+    margin-left: auto;
+    margin-right: auto;
+  }
+}
+
+.subscription-info {
+  margin-left: 4rem;
+  background: var(--secondary-color);
+  border-radius: 10px;
+  height: 15rem;
+  width: 20rem;
+  padding: 1rem;
+  margin-top: 1rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  color: var(--on-secondary-color);
+  text-align: center;
+  font-size: 1rem;
+  font-weight: 300;
+  line-height: 18px;
+
+  @media (max-width: 1240px) {
+    width: 80%;
+  }
+
+  @media (max-width: 600px) {
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+  }
+}
+
+.download-button {
+  font-weight: 700;
+  background-color: var(--on-neutral-color);
+  color: var(--neutral-color);
+  padding: 10px 20px;
+  border-radius: 5px;
+  text-decoration: none;
+  display: inline-block;
+}
+
+.subscription-steps ol {
+  list-style-type: decimal;
+  padding-left: 2rem;
+  color: var(--on-neutral-color);
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 20px;
+  margin-left: 3rem;
+  width: 20rem;
+
+  @media (max-width: 1240px) {
+    width: 80%;
+  }
+
+  @media (max-width: 600px) {
+    width: 100%;
+    margin-left: auto;
+    margin-right: auto;
+  }
+}
+</style>

+ 3 - 2
components/Logiciels/Artist/Comparatif.vue

@@ -93,8 +93,9 @@ const comparisonItems: Array<ComparisonItem> = [
 
 
 <style scoped>
 <style scoped>
 
 
-.v-container{
+.v-container {
   width: 95%;
   width: 95%;
   margin-right: auto;
   margin-right: auto;
   margin-left: auto;
   margin-left: auto;
-}</style>
+}
+</style>

+ 35 - 6
components/Logiciels/Artist/Formations.vue

@@ -10,16 +10,16 @@
           </v-row>
           </v-row>
 
 
           <v-row class="formation py-12 align-center mb-12" no-gutters>
           <v-row class="formation py-12 align-center mb-12" no-gutters>
-            <v-col cols="12" lg="6">
+            <v-col cols="12" lg="4">
               <v-img src="/images/logiciels/artist/webinaire.jpg" class="meeting-img" />
               <v-img src="/images/logiciels/artist/webinaire.jpg" class="meeting-img" />
             </v-col>
             </v-col>
 
 
-            <v-col cols="12" lg="6" md="6" sm="6">
-              <h3 class="ml-6 mr-12">
+            <v-col cols="12" lg="6">
+              <h3>
                 Webinaire - Partez à la découverte du logiciel Opentalent Artist
                 Webinaire - Partez à la découverte du logiciel Opentalent Artist
               </h3>
               </h3>
 
 
-              <p class="details ml-6 mr-12" >
+              <p class="details" >
                 Rejoignez notre webinaire, spécialement conçu pour les
                 Rejoignez notre webinaire, spécialement conçu pour les
                 professionnels du secteur culturel, orchestres, chorales,
                 professionnels du secteur culturel, orchestres, chorales,
                 compagnies de danse, ainsi que les troupes de théâtre et de
                 compagnies de danse, ainsi que les troupes de théâtre et de
@@ -32,7 +32,7 @@
               </p>
               </p>
 
 
               <nuxt-link to="/webinaires">
               <nuxt-link to="/webinaires">
-                <v-btn class="mt-12 ml-6">
+                <v-btn>
                   S'inscrire à nos webinaires
                   S'inscrire à nos webinaires
                 </v-btn>
                 </v-btn>
               </nuxt-link>
               </nuxt-link>
@@ -64,6 +64,10 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     background-position: center;
     background-position: center;
     background-size: cover;
     background-size: cover;
     border-radius: 10%;
     border-radius: 10%;
+
+    @media (max-width: 1240px) {
+      margin: 0 auto;
+    }
   }
   }
 
 
   :deep(.v-img img) {
   :deep(.v-img img) {
@@ -83,7 +87,15 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     font-size: 1rem;
     font-size: 1rem;
     line-height: 1.5rem;
     line-height: 1.5rem;
     color: var(--on-primary-color);
     color: var(--on-primary-color);
-    text-align: justify
+    text-align: justify;
+
+    @media (max-width: 1240px) {
+      margin-right: 24px !important;
+    }
+
+    @media (max-width: 600px) {
+      margin-right: auto !important;
+    }
   }
   }
 
 
   .v-btn {
   .v-btn {
@@ -96,6 +108,23 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
     border-color: var(--on-primary-color);
     border-color: var(--on-primary-color);
     border-radius: 0.5rem;
     border-radius: 0.5rem;
     width: 90%;
     width: 90%;
+    margin: 24px auto;
+  }
+
+  .v-col-12:nth-child(2) {
+    @media (min-width: 1240px) {
+      padding: 24px 64px;
+    }
+    @media (max-width: 1240px) {
+      margin: 24px 5%;
+      max-width: 90%;
+    }
+
+    a {
+      display: flex;
+      width: 100%;
+      text-decoration: none;
+    }
   }
   }
 }
 }
 </style>
 </style>

+ 3 - 3
components/Logiciels/Artist/SomeNumbers.vue

@@ -9,7 +9,7 @@
     <v-container>
     <v-container>
       <v-row class="card-container mb-12">
       <v-row class="card-container mb-12">
         <v-col
         <v-col
-          cols="3"
+          lg="3"
           class="d-flex justify-center align-center small-padding"
           class="d-flex justify-center align-center small-padding"
         >
         >
           <CommonCardStat
           <CommonCardStat
@@ -18,14 +18,14 @@
           />
           />
         </v-col>
         </v-col>
 
 
-        <v-col cols="3" class="d-flex justify-center align-center">
+        <v-col lg="3" class="d-flex justify-center align-center">
           <CommonCardStat
           <CommonCardStat
             number="3 424"
             number="3 424"
             text="Structures"
             text="Structures"
           />
           />
         </v-col>
         </v-col>
 
 
-        <v-col cols="3" class="d-flex justify-center align-center">
+        <v-col lg="3" class="d-flex justify-center align-center">
           <CommonCardStat
           <CommonCardStat
             number="13"
             number="13"
             text="Années d'expérience"
             text="Années d'expérience"

+ 1 - 1
components/Logiciels/Manager/Formation.vue

@@ -10,7 +10,7 @@
 
 
         <v-row class="formation pb-6 align-center">
         <v-row class="formation pb-6 align-center">
           <v-col
           <v-col
-            cols="6"
+            md="6"
             v-for="(formation, index) in formations"
             v-for="(formation, index) in formations"
             :key="index"
             :key="index"
           >
           >

+ 2 - 1
components/Logiciels/Manager/Network.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <AnchoredSection id="network">
   <AnchoredSection id="network">
     <LayoutContainer>
     <LayoutContainer>
-      <v-row class="mt-12  center-90">
+      <v-row class="mt-12 center-90">
         <LayoutUISubTitle>
         <LayoutUISubTitle>
           Un réseau pyramidal
           Un réseau pyramidal
         </LayoutUISubTitle>
         </LayoutUISubTitle>
@@ -45,5 +45,6 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   font-weight: 400;
   font-weight: 400;
   line-height: 2.375rem;
   line-height: 2.375rem;
   width: 40rem;
   width: 40rem;
+  max-width: 90%;
 }
 }
 </style>
 </style>

+ 3 - 3
components/Logiciels/Manager/SomeNumbers.vue

@@ -9,7 +9,7 @@
     <v-container>
     <v-container>
       <v-row class="card-container justify-center mb-12">
       <v-row class="card-container justify-center mb-12">
         <v-col
         <v-col
-          cols="3"
+          md="3"
           class="d-flex justify-center align-center small-padding"
           class="d-flex justify-center align-center small-padding"
         >
         >
           <CommonCardStat
           <CommonCardStat
@@ -17,13 +17,13 @@
             text="Structures en réseau"
             text="Structures en réseau"
           />
           />
         </v-col>
         </v-col>
-        <v-col cols="3" class="d-flex justify-center align-center">
+        <v-col md="3" class="d-flex justify-center align-center">
           <CommonCardStat
           <CommonCardStat
             number="300 000"
             number="300 000"
             text="Utilisateurs"
             text="Utilisateurs"
           />
           />
         </v-col>
         </v-col>
-        <v-col cols="3" class="d-flex justify-center align-center">
+        <v-col md="3" class="d-flex justify-center align-center">
           <CommonCardStat
           <CommonCardStat
             number="12"
             number="12"
             text="Années de collaboration"
             text="Années de collaboration"

+ 28 - 9
components/Logiciels/School/Contact.vue

@@ -3,15 +3,19 @@
     <LayoutContainer>
     <LayoutContainer>
       <!-- Section "Appelez nous" -->
       <!-- Section "Appelez nous" -->
       <v-row>
       <v-row>
-        <v-col cols="6">
+        <LayoutUISubTitle v-if="smAndDown">
+          Contactez-nous
+        </LayoutUISubTitle>
+
+        <v-col cols="12" md="6">
           <v-img
           <v-img
             src="/images/contact/contact.jpg"
             src="/images/contact/contact.jpg"
             class="help-img"
             class="help-img"
           />
           />
         </v-col>
         </v-col>
 
 
-        <v-col cols="5">
-          <LayoutUISubTitle>
+        <v-col cols="12" lg="5">
+          <LayoutUISubTitle v-if="mdAndUp">
             Contactez-nous
             Contactez-nous
           </LayoutUISubTitle>
           </LayoutUISubTitle>
 
 
@@ -39,7 +43,7 @@
 
 
       <!-- Section "Adhérent CMF" -->
       <!-- Section "Adhérent CMF" -->
       <v-row class="center-90" >
       <v-row class="center-90" >
-        <v-col cols="6" >
+        <v-col cols="12" lg="6" >
           <LayoutUISubTitle>
           <LayoutUISubTitle>
             Adhérents CMF
             Adhérents CMF
           </LayoutUISubTitle>
           </LayoutUISubTitle>
@@ -71,12 +75,12 @@
               target="_blank"
               target="_blank"
               class="btn-contact"
               class="btn-contact"
             >
             >
-              Je souhaite obtenir mon code d'accès
+              Obtenir mon code d'accès
             </v-btn>
             </v-btn>
           </div>
           </div>
         </v-col>
         </v-col>
 
 
-        <v-col cols="6">
+        <v-col cols="12" md="6">
            <v-img
            <v-img
              src="/images/logiciels/school/CMF-vivre_la_musique_ensemble.jpg"
              src="/images/logiciels/school/CMF-vivre_la_musique_ensemble.jpg"
              class="logo-cmf mt-12"
              class="logo-cmf mt-12"
@@ -88,6 +92,10 @@
 </template>
 </template>
 <script setup>
 <script setup>
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
 import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
+import { useDisplay } from "vuetify";
+
+const { smAndDown, mdAndUp } = useDisplay()
+
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
@@ -103,6 +111,10 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   background-size: contain;
   background-size: contain;
   width: 80%;
   width: 80%;
   height: 100%;
   height: 100%;
+
+  @media (max-width: 600px) {
+    margin: 0 auto !important;
+  }
 }
 }
 
 
 .btn-contact {
 .btn-contact {
@@ -113,13 +125,14 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   color: var(--on-secondary-color);
   color: var(--on-secondary-color);
   padding: 19px 28px;
   padding: 19px 28px;
   gap: 9px;
   gap: 9px;
+  max-width: 90%;
 }
 }
 
 
 .subtitle {
 .subtitle {
   font-weight: 400;
   font-weight: 400;
   font-size: 34px;
   font-size: 34px;
   line-height: 38px;
   line-height: 38px;
-  color: var(--primary-color);
+  color: var(--on-neutral-color);
   margin-bottom: 2rem;
   margin-bottom: 2rem;
 }
 }
 
 
@@ -127,13 +140,19 @@ import AnchoredSection from "~/components/Layout/AnchoredSection.vue";
   font-weight: 300;
   font-weight: 300;
   font-size: 16px;
   font-size: 16px;
   line-height: 20px;
   line-height: 20px;
-  color: var(--primary-color);
+  color: var(--on-neutral-color);
   text-align: justify;
   text-align: justify;
 }
 }
 
 
-@media (max-width: 1600px) {
+@media (max-width: 1600px) and (min-width: 600px) {
   .contact-details {
   .contact-details {
     width: 30rem !important;
     width: 30rem !important;
   }
   }
 }
 }
+
+@media (max-width: 600px) {
+  .contact-details {
+    width: 90%;
+  }
+}
 </style>
 </style>

+ 16 - 1
components/Logiciels/School/Formations.vue

@@ -10,7 +10,8 @@
 
 
         <v-row class="formation pb-6 align-center">
         <v-row class="formation pb-6 align-center">
           <v-col
           <v-col
-            cols="6"
+            cols="12"
+            md="6"
             v-for="(formation, index) in formations"
             v-for="(formation, index) in formations"
             :key="index"
             :key="index"
           >
           >
@@ -131,5 +132,19 @@ const formations: Array<Formation> = [
     line-height: 1.5rem;
     line-height: 1.5rem;
     color: var(--on-primary-color);
     color: var(--on-primary-color);
   }
   }
+
+  @media (max-width: 600px) {
+    .v-btn {
+      height: 96px;
+    }
+
+    :deep(.v-btn__content) {
+      white-space: pre-wrap;
+      line-height: 1.2em;
+      padding: auto;
+      text-align: center;
+    }
+  }
+
 }
 }
 </style>
 </style>

+ 4 - 4
components/Logiciels/School/SomeNumbers.vue

@@ -17,7 +17,7 @@
     <v-container>
     <v-container>
       <v-row class="mb-12 card-container custom-row">
       <v-row class="mb-12 card-container custom-row">
         <v-col
         <v-col
-          cols="3"
+          lg="3"
           class="d-flex justify-center align-center small-padding"
           class="d-flex justify-center align-center small-padding"
         >
         >
           <CommonCardStat
           <CommonCardStat
@@ -26,7 +26,7 @@
           />
           />
         </v-col>
         </v-col>
         <v-col
         <v-col
-          cols="3"
+          lg="3"
           class="d-flex justify-center align-center"
           class="d-flex justify-center align-center"
         >
         >
           <CommonCardStat
           <CommonCardStat
@@ -35,7 +35,7 @@
           />
           />
         </v-col>
         </v-col>
         <v-col
         <v-col
-          cols="3"
+          lg="3"
           class="d-flex justify-center align-center"
           class="d-flex justify-center align-center"
         >
         >
           <CommonCardStat
           <CommonCardStat
@@ -44,7 +44,7 @@
           />
           />
         </v-col>
         </v-col>
         <v-col
         <v-col
-          cols="3"
+          lg="3"
           class="d-flex justify-center align-center"
           class="d-flex justify-center align-center"
         >
         >
           <CommonCardStat
           <CommonCardStat

+ 14 - 3
components/Logiciels/Title.vue

@@ -2,17 +2,17 @@
 <template>
 <template>
   <LayoutContainer>
   <LayoutContainer>
     <div class="container-title">
     <div class="container-title">
-      <v-col cols="3" class="lateral-text">
+      <v-col v-if="mdAndUp" cols="3" class="lateral-text">
         <span>
         <span>
           <slot name="left-text"/>
           <slot name="left-text"/>
         </span>
         </span>
       </v-col>
       </v-col>
-      <v-col cols="6">
+      <v-col cols="12" md="6">
         <h1>
         <h1>
           <slot />
           <slot />
         </h1>
         </h1>
       </v-col>
       </v-col>
-      <v-col cols="3" class="lateral-text">
+      <v-col v-if="mdAndUp" cols="3" class="lateral-text">
         <span>
         <span>
           <slot name="right-text" />
           <slot name="right-text" />
         </span>
         </span>
@@ -21,6 +21,12 @@
   </LayoutContainer>
   </LayoutContainer>
 </template>
 </template>
 
 
+<script setup lang="ts">
+import { useDisplay } from "vuetify";
+
+const { mdAndUp } = useDisplay()
+</script>
+
 <style scoped lang="scss">
 <style scoped lang="scss">
 .container-title {
 .container-title {
   display: flex;
   display: flex;
@@ -37,6 +43,11 @@ h1 {
   line-height: 77px;
   line-height: 77px;
   color: var(--on-neutral-color);
   color: var(--on-neutral-color);
   text-align: center;
   text-align: center;
+
+  @media (max-width: 600px) {
+    font-size: 42px;
+    line-height: 46px;
+  }
 }
 }
 
 
 .lateral-text {
 .lateral-text {

+ 16 - 4
components/News/Details.vue

@@ -40,11 +40,11 @@
           />
           />
 
 
           <v-row class="center-90">
           <v-row class="center-90">
-            <v-col cols="6">
+            <v-col cols="12" md="6">
               <v-img :src="getImageUrl(newsItem.attachment)"/>
               <v-img :src="getImageUrl(newsItem.attachment)"/>
             </v-col>
             </v-col>
 
 
-            <v-col cols="6">
+            <v-col cols="12" md="6">
               <h1>
               <h1>
                 {{ newsItem.title }}
                 {{ newsItem.title }}
               </h1>
               </h1>
@@ -68,7 +68,7 @@
             <p>
             <p>
               MOTS CLÉS
               MOTS CLÉS
             </p>
             </p>
-            <div>
+            <div v-if="mdAndUp">
               <p>PARTAGER</p>
               <p>PARTAGER</p>
             </div>
             </div>
           </v-row>
           </v-row>
@@ -80,8 +80,13 @@
               </span>
               </span>
             </p>
             </p>
 
 
-            <CommonShare />
+            <CommonShare v-if="mdAndUp" />
           </v-row>
           </v-row>
+
+          <div v-if="smAndDown" class="center-90">
+            <p>PARTAGER</p>
+            <CommonShare />
+          </div>
         </div>
         </div>
       </div>
       </div>
     </div>
     </div>
@@ -93,6 +98,9 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { useEntityFetch } from "~/composables/data/useEntityFetch";
 import { useEntityFetch } from "~/composables/data/useEntityFetch";
 import News from "~/models/Maestro/News";
 import News from "~/models/Maestro/News";
+import { useDisplay } from "vuetify";
+
+const { mdAndUp, smAndDown } = useDisplay()
 
 
 const route = useRoute();
 const route = useRoute();
 const { fetch } = useEntityFetch()
 const { fetch } = useEntityFetch()
@@ -127,6 +135,10 @@ const getImageUrl = (attachment: string): string | null => {
     text-transform: uppercase;
     text-transform: uppercase;
     font-size: 36px;
     font-size: 36px;
     font-weight: 600;
     font-weight: 600;
+
+    @media (max-width: 600px) {
+      margin-top: 3rem;
+    }
   }
   }
 
 
   .description {
   .description {

+ 11 - 2
components/News/List.vue

@@ -24,7 +24,7 @@
         <v-card-item>
         <v-card-item>
           <v-container fluid>
           <v-container fluid>
             <v-row align="center">
             <v-row align="center">
-              <v-col cols="3">
+              <v-col cols="12" md="3">
                 <v-img
                 <v-img
                   v-if="newsItem.attachment"
                   v-if="newsItem.attachment"
                   :src="getImageUrl(newsItem.attachment)"
                   :src="getImageUrl(newsItem.attachment)"
@@ -34,7 +34,7 @@
                 />
                 />
               </v-col>
               </v-col>
 
 
-              <v-col cols="9">
+              <v-col cols="12" md="9">
                 <div class="details">
                 <div class="details">
                   <NuxtLink
                   <NuxtLink
                     :to="`/actualites/${newsItem.id}`"
                     :to="`/actualites/${newsItem.id}`"
@@ -146,6 +146,10 @@ h1 {
   font-size: 4rem;
   font-size: 4rem;
   font-weight: 600;
   font-weight: 600;
   line-height: 42px;
   line-height: 42px;
+
+  @media (max-width: 600px) {
+    font-size: 2.5rem;
+  }
 }
 }
 
 
 .news {
 .news {
@@ -181,6 +185,11 @@ h1 {
     border-radius: 20px;
     border-radius: 20px;
     width: 99%;
     width: 99%;
 
 
+    @media (max-width: 600px) {
+      width: 94%;
+      margin: 12px 3%;
+    }
+
     .v-card-title {
     .v-card-title {
       color: var(--neutral-color);
       color: var(--neutral-color);
       font-size: 36px;
       font-size: 36px;

+ 10 - 3
components/Webinaire/Catalogue.vue

@@ -24,7 +24,8 @@
         <v-col
         <v-col
           v-for="(course, index) in courses"
           v-for="(course, index) in courses"
           :key="index"
           :key="index"
-          cols="4"
+          cols="12"
+          md="4"
         >
         >
           <v-card class="mb-4">
           <v-card class="mb-4">
             <v-card-text>
             <v-card-text>
@@ -343,7 +344,10 @@ const closeModal = () => {
     color: var(--primary-color);
     color: var(--primary-color);
     margin-top: 1rem;
     margin-top: 1rem;
     margin-bottom: 0.5rem;
     margin-bottom: 0.5rem;
-    height: 5rem;
+
+    @media (min-width: 600px) {
+      height: 5rem;
+    }
   }
   }
 
 
   .objectives, .program {
   .objectives, .program {
@@ -354,7 +358,10 @@ const closeModal = () => {
     margin-bottom: 1rem;
     margin-bottom: 1rem;
     border-radius: 1rem;
     border-radius: 1rem;
     padding: 1rem 1rem 1rem 1.5rem;
     padding: 1rem 1rem 1rem 1.5rem;
-    height: 11rem;
+
+    @media (min-width: 600px) {
+      height: 11rem;
+    }
 
 
     h6 {
     h6 {
       font-weight: 500;
       font-weight: 500;

+ 0 - 1
pages/CGV.vue

@@ -766,7 +766,6 @@
       </v-col>
       </v-col>
     </v-row>
     </v-row>
   </v-container>
   </v-container>
-  <LayoutFooter />
 </template>
 </template>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 1 - 1
pages/formations.vue

@@ -20,7 +20,7 @@
     </template>
     </template>
   </CommonBanner>
   </CommonBanner>
 
 
-  <CommonMenuScroll :menus="menus" class="mb-6" />
+  <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
 
 
   <CommonActionMenu />
   <CommonActionMenu />
 
 

+ 3 - 3
pages/index.vue

@@ -6,12 +6,12 @@
 
 
   <CommonActionMenu />
   <CommonActionMenu />
 
 
-  <LayoutUITitlePage :class="mdAndDown ? 'mt-12' : ''">
+  <LayoutUITitlePage>
     LOGICIELS CULTURELS
     LOGICIELS CULTURELS
     <template #subtitle>UNE GAMME DE LOGICIELS ADAPTÉE À CHAQUE STRUCTURE CULTURELLE</template>
     <template #subtitle>UNE GAMME DE LOGICIELS ADAPTÉE À CHAQUE STRUCTURE CULTURELLE</template>
   </LayoutUITitlePage>
   </LayoutUITitlePage>
 
 
-  <HomeCaroussel v-if="mdAndUp"/>
+  <HomeCaroussel />
 
 
   <HomePromotion />
   <HomePromotion />
 
 
@@ -27,7 +27,7 @@
 
 
   <HomeHelp />
   <HomeHelp />
 
 
-  <LayoutFooterPrefooter v-if="lgAndUp" />
+  <LayoutFooterPrefooter />
 </template>
 </template>
 
 
 <script setup>
 <script setup>

+ 2 - 2
pages/opentalent_artist.vue

@@ -20,7 +20,7 @@
       logo-src="/images/logo/logiciels/Artist-noir.png"
       logo-src="/images/logo/logiciels/Artist-noir.png"
     />
     />
 
 
-    <CommonMenuScroll :menus="menus" class="mb-6" />
+    <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
 
 
     <LogicielsArtistPresentation />
     <LogicielsArtistPresentation />
 
 
@@ -49,7 +49,7 @@ import { ActionMenuItemType } from "~/types/enum/layout";
 import type { MenuScroll, ActionMenuItem } from "~/types/interface";
 import type { MenuScroll, ActionMenuItem } from "~/types/interface";
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 
 
-const { mdAndUp } = useDisplay()
+const { mdAndUp, lgAndUp } = useDisplay()
 
 
 const menus: Array<MenuScroll> = [
 const menus: Array<MenuScroll> = [
   { anchor: "presentation", label: "Présentation" },
   { anchor: "presentation", label: "Présentation" },

+ 2 - 2
pages/opentalent_manager.vue

@@ -18,7 +18,7 @@
       logoSrc="/images/logo/logiciels/Manager-noir.png"
       logoSrc="/images/logo/logiciels/Manager-noir.png"
     />
     />
 
 
-    <CommonMenuScroll :menus="menus" class="mb-6" />
+    <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
 
 
     <CommonActionMenu :actions="stickyMenuActions" />
     <CommonActionMenu :actions="stickyMenuActions" />
 
 
@@ -47,7 +47,7 @@ import type { MenuScroll, ActionMenuItem } from "~/types/interface";
 import { ActionMenuItemType } from "~/types/enum/layout";
 import { ActionMenuItemType } from "~/types/enum/layout";
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 
 
-const { mdAndUp } = useDisplay()
+const { mdAndUp, lgAndUp } = useDisplay()
 
 
 const menus: Array<MenuScroll> = ref([
 const menus: Array<MenuScroll> = ref([
   { anchor: "presentation", label: "Présentation" },
   { anchor: "presentation", label: "Présentation" },

+ 2 - 2
pages/opentalent_school.vue

@@ -19,7 +19,7 @@
       :logo-alt-theme="true"
       :logo-alt-theme="true"
     />
     />
 
 
-    <CommonMenuScroll :menus="menus" class="mb-6" />
+    <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
 
 
     <CommonActionMenu :actions="stickyMenuActions" />
     <CommonActionMenu :actions="stickyMenuActions" />
 
 
@@ -50,7 +50,7 @@ import type { MenuScroll, ActionMenuItem } from "~/types/interface";
 import { ActionMenuItemType } from "~/types/enum/layout";
 import { ActionMenuItemType } from "~/types/enum/layout";
 import { useDisplay } from "vuetify";
 import { useDisplay } from "vuetify";
 
 
-const { mdAndUp } = useDisplay()
+const { mdAndUp, lgAndUp } = useDisplay()
 
 
 const menus: Array<MenuScroll> = [
 const menus: Array<MenuScroll> = [
   { anchor: "presentation", label: "Présentation" },
   { anchor: "presentation", label: "Présentation" },

+ 1 - 1
pages/qui-sommes-nous.vue

@@ -17,7 +17,7 @@
     imageAlt="banner"
     imageAlt="banner"
   />
   />
 
 
-  <CommonMenuScroll :menus="menus" class="mb-6" />
+  <CommonMenuScroll v-if="lgAndUp" :menus="menus" class="mb-6" />
 
 
   <CommonActionMenu />
   <CommonActionMenu />
 
 

+ 1 - 0
types/interface.d.ts

@@ -17,6 +17,7 @@ interface MainMenuItem {
 interface CarouselItem {
 interface CarouselItem {
   logo: string,
   logo: string,
   description: string,
   description: string,
+  descriptionSm: string,
   buttonClass: string,
   buttonClass: string,
   image: string,
   image: string,
   color: string,
   color: string,