/* ==========================================================================
   Socle des pages migrées hors Elementor
   --------------------------------------------------------------------------
   Reproduit les valeurs par défaut du système de conteneurs d'Elementor, sur
   lesquelles s'appuie la feuille transposée de chaque page. Sans ce socle, les
   règles transposées n'ont pas de base cohérente (retraits, largeur de contenu,
   comportement des éléments flexibles).
   ========================================================================== */

.astk-c,
.astk-c *,
.astk-c *::before,
.astk-c *::after {
  box-sizing: border-box;
}

/* Conteneur : mêmes valeurs par défaut que .e-con. */
.astk-c {
  position: relative;
  width: 100%;
  height: auto;
  min-width: 0;
  overflow: visible;
  border-radius: 0;
  margin: 0;
  padding-left: 10px;
  padding-right: 10px;
  row-gap: 20px;
  column-gap: 20px;
}

/* Un conteneur pleine largeur porte lui-même la mise en page.
   « flex-direction: column » est la valeur par défaut d'Elementor pour tout
   conteneur (.e-con.e-flex) : sans elle, les conteneurs sans direction explicite
   passent en ligne et toute la page se disloque. */
.astk-c-pleine {
  flex-direction: column;
  flex-wrap: nowrap;
  padding-top: 10px;
  padding-bottom: 10px;
  flex: 0 1 auto;
}

/* Un conteneur « boîte » délègue la mise en page à sa piste interne, qui
   limite la largeur du contenu et le centre. */
.astk-c-boite {
  flex: 0 1 auto;
}

.astk-c-boite > .astk-in {
  flex-direction: column;
  flex-wrap: nowrap;
  width: 100%;
  height: 100%;
  max-width: min(100%, 1140px);
  margin: 0 auto;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-left: 0;
  padding-right: 0;
  row-gap: 20px;
  column-gap: 20px;
  flex: 1 1 auto;
}

/* Voile de fond : chez Elementor il n'existe que si --background-overlay est
   défini. On reproduit cette bascule à l'identique. */
.astk-c::before {
  content: var(--background-overlay);
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  opacity: var(--overlay-opacity, 1);
  mix-blend-mode: var(--overlay-mix-blend-mode, normal);
  pointer-events: none;
}

/* Les enfants restent au-dessus du voile. Deux niveaux à couvrir : un conteneur
   pleine largeur porte ses enfants directement, un conteneur « boîte » les place
   dans sa piste interne. */
.astk-c > *,
.astk-c > .astk-in > * {
  position: relative;
  z-index: 1;
}

/* --------------------------------------------------------------------------
   Éléments
   -------------------------------------------------------------------------- */

.astk-titre {
  margin: 0;
  padding: 0;
  line-height: 1;
}

/* Pas de « display: block » : Elementor laisse ses images en flux inline, ce qui
   réserve l'espace sous la ligne de base. Le forcer en bloc raccourcissait de
   10 px chaque conteneur d'image, sur toutes les pages. */
.astk-img {
  max-width: 100%;
  height: auto;
  border: none;
  border-radius: 0;
  box-shadow: none;
}

.astk-figure {
  margin: 0;
}

/* Pas de remise a zero des marges du premier et du dernier enfant : Elementor
   laisse la marge de paragraphe du theme (1.5em), et l'annuler decalait toutes
   les sections contenant du texte. */

.astk-liste-items {
  margin: 0;
  padding: 0;
  list-style: none;
}

.astk-liste-item {
  display: flex;
  align-items: center;
  gap: 0.25em;
}

/* Bouton : style global des boutons du kit (couleur « Accentué »). */
.astk-btn {
  display: inline-block;
  padding: 12px 24px;
  min-height: 40px;
  background-color: var(--astrak-accent);
  color: var(--astrak-texte);
  fill: var(--astrak-texte);
  font-family: var(--astrak-font-texte);
  font-size: var(--astrak-accent-size);
  font-weight: var(--astrak-accent-weight);
  line-height: 1;
  text-align: center;
  text-decoration: none;
  border-radius: 3px;
  transition: all 0.3s;
}

.astk-separateur {
  margin: 0;
  border: 0;
  border-top: 1px solid currentColor;
}

/* --------------------------------------------------------------------------
   Avis clients
   --------------------------------------------------------------------------
   Elementor les affichait dans un carrousel Swiper réglé sur trois vues pour
   trois avis : le défilement ne servait à rien. Une grille donne le même rendu
   sans la bibliothèque.
   -------------------------------------------------------------------------- */

.astk-avis-grille {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
  width: 100%;
}

.astk-avis {
  overflow: hidden;
}

.astk-avis-item {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-height: 400px;
  margin: 0;
  padding: 30px;
  border-radius: 10px;
  overflow: hidden;
}

.astk-avis-texte {
  margin: 0;
  color: #71717a;
  font-family: "Poppins", sans-serif;
  font-weight: 400;
  line-height: 30px;
}

.astk-avis-pied {
  display: flex;
  align-items: center;
  gap: 12px;
}

.astk-avis-photo {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
}

.astk-avis-nom {
  font-family: "Poppins", sans-serif;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.2em;
}

/* Tablette : deux colonnes, les cartes respirent encore. */
@media (max-width: 1024px) {
  .astk-avis-grille {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}

/* Mobile : le carrousel d'origine gardait trois colonnes, ce qui donnait des
   colonnes d'une lettre de large. On empile, on retire le rognage en hauteur,
   et on donne une vraie apparence de carte pour délimiter chaque avis. */
@media (max-width: 767px) {
  .astk-avis {
    overflow: visible;
  }

  .astk-avis-grille {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .astk-avis-item {
    max-height: none;
    padding: 24px;
    background-color: #fff;
    border-radius: 14px;
    box-shadow: 0 2px 12px rgba(15, 15, 61, 0.08);
    overflow: visible;
  }

  .astk-avis-texte {
    font-size: 15px;
    line-height: 26px;
  }
}

/* --------------------------------------------------------------------------
   Positionnement
   --------------------------------------------------------------------------
   Elementor sort un élément du flux via une classe, pas via sa CSS de page.
   Sans cet équivalent, les visuels du héros restent dans le flux et allongent
   leur conteneur.
   -------------------------------------------------------------------------- */

.astk-c > .astk-abs,
.astk-c > .astk-in > .astk-abs {
  position: absolute;
  z-index: 1;
}

.astk-c > .astk-fixe,
.astk-c > .astk-in > .astk-fixe {
  position: fixed;
  z-index: 1;
}

/* --------------------------------------------------------------------------
   Typographie des blocs de texte
   --------------------------------------------------------------------------
   La CSS additionnelle du site cible « .elementor-widget-text-editor p ».
   Les blocs migrés ne sont plus dans ce conteneur : on reprend les mêmes
   valeurs, à la même spécificité, sur .astk-texte.
   -------------------------------------------------------------------------- */

.astk-texte p {
  font-family: "Poppins", sans-serif;
  font-size: 16px;
  line-height: 30px;
}

/* --------------------------------------------------------------------------
   Encart à icône
   --------------------------------------------------------------------------
   Reprend la structure et les valeurs par défaut du widget icon-box
   d'Elementor. La variable --icon-box-icon-margin est posée par la feuille
   transposée de chaque page.
   -------------------------------------------------------------------------- */

.astk-icone-wrap {
  display: flex;
  flex-direction: column;
  gap: var(--icon-box-icon-margin, 15px);
  text-align: center;
}

.astk-icone-zone {
  display: inline-flex;
  flex: 0 0 auto;
}

.astk-icone-contenu {
  flex-grow: 1;
  width: 100%;
}

.astk-icone-titre {
  margin: 0;
}

.astk-icone-titre a {
  color: inherit;
}

.astk-icone-desc {
  margin: 0;
}

.astk-pos-top .astk-icone-wrap {
  flex-direction: column;
  text-align: center;
}

.astk-pos-top .astk-icone-zone {
  margin-inline: auto;
}

.astk-pos-left .astk-icone-wrap {
  flex-direction: row;
  text-align: start;
}

.astk-pos-right .astk-icone-wrap {
  flex-direction: row-reverse;
  text-align: end;
}

/* --------------------------------------------------------------------------
   Icônes
   --------------------------------------------------------------------------
   Valeurs par défaut d'Elementor : l'icône est dimensionnée par sa taille de
   police, et le SVG occupe exactement 1em. Sans ces règles, un SVG injecté
   garde ses dimensions d'origine et déforme l'encart qui le contient.
   -------------------------------------------------------------------------- */

.astk-icone {
  display: inline-block;
  font-size: 50px;
  line-height: 1;
  color: #69727d;
  text-align: center;
  transition: all 0.3s;
}

.astk-icone svg,
.astk-icone i,
.astk-icone img {
  display: block;
  position: relative;
  width: 1em;
  height: 1em;
}

/* Icônes de liste : dimensionnées par --e-icon-list-icon-size, 1em par défaut. */
.astk-liste-icone {
  display: inline-flex;
  align-items: center;
}

.astk-liste-icone svg,
.astk-liste-icone i,
.astk-liste-icone img {
  width: var(--e-icon-list-icon-size, 1em);
  height: var(--e-icon-list-icon-size, 1em);
}

/* --------------------------------------------------------------------------
   Mobile
   --------------------------------------------------------------------------
   Elementor applique sous 767px une règle globale à tous les conteneurs flex :
   largeur pleine et retour à la ligne autorisé. C'est elle qui fait passer les
   colonnes les unes sous les autres. Sans son équivalent, les blocs restent
   côte à côte et deviennent illisibles.
   -------------------------------------------------------------------------- */

@media (max-width: 767px) {
  .astk-c {
    width: 100%;
  }

  .astk-c-pleine,
  .astk-c-boite > .astk-in {
    flex-wrap: wrap;
  }
}

/* Tout widget placé dans un conteneur : Elementor le borne à la largeur
   disponible et l'autorise à se rétracter. Sans ça, un bloc HTML au contenu
   large fait déborder toute la page en mobile. */
.astk-el {
  position: relative;
  max-width: 100%;
  min-width: 0;
}

/* --------------------------------------------------------------------------
   Réseaux sociaux
   --------------------------------------------------------------------------
   Valeurs par défaut du widget d'Elementor : pastille carrée dont la taille
   découle de la taille de police (25px) plus deux fois le retrait (0,5em).
   -------------------------------------------------------------------------- */

.astk-social-liste {
  display: flex;
  /* Pas de retour à la ligne : le bloc se rétracte à la largeur d'une seule
     pastille dans un conteneur en colonne, et les icônes s'empileraient. */
  flex-wrap: nowrap;
  justify-content: center;
  column-gap: var(--grid-column-gap, 5px);
  row-gap: var(--grid-row-gap, 5px);
  margin: 0;
  padding: 0;
  list-style: none;
}

.astk-social-item {
  display: flex;
  margin: 0;
  list-style: none;
}

.astk-social-lien {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em));
  height: calc(var(--icon-size, 25px) + 2 * var(--icon-padding, 0.5em));
  font-size: var(--icon-size, 25px);
  line-height: var(--icon-size, 25px);
  background-color: #69727d;
  color: #fff;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

.astk-social-lien:hover {
  color: #fff;
  opacity: 0.9;
}

.astk-social-icone {
  width: 1em;
  height: 1em;
  fill: currentColor;
}

/* --------------------------------------------------------------------------
   Encart image + texte
   --------------------------------------------------------------------------
   Valeurs par défaut du widget image-box d'Elementor. La largeur du visuel est
   fixée par la feuille de la page (souvent un pourcentage) : sans elle, l'image
   s'affiche à sa taille d'origine et double la hauteur de l'encart.
   -------------------------------------------------------------------------- */

.astk-image-box .astk-icone-wrap {
  gap: 0;
}

/* Contrairement à l'encart à icône, ce visuel doit pouvoir se rétracter :
   c'est ce qui lui donne sa largeur réelle quand le texte occupe la place. */
.astk-image-box-visuel {
  display: inline-block;
  flex: 0 1 auto;
}

.astk-image-box-visuel img {
  display: block;
  width: 100%;
  height: auto;
  line-height: 0;
}

.astk-image-box.astk-pos-left .astk-icone-wrap,
.astk-image-box.astk-pos-right .astk-icone-wrap {
  align-items: flex-start;
}

/* --------------------------------------------------------------------------
   Boucle d'articles
   --------------------------------------------------------------------------
   Reprend la grille du widget « loop-grid » : trois colonnes sur grand écran,
   deux en tablette, une en mobile, avec 30px d'écart.
   -------------------------------------------------------------------------- */

.astk-boucle-grille {
  display: grid;
  grid-template-columns: repeat(var(--astk-colonnes, 3), 1fr);
  grid-auto-rows: 1fr;
  gap: 30px;
  width: 100%;
}

.astk-boucle-grille > * {
  min-width: 0;
}

/* Chaque article occupe toute la hauteur de sa cellule. */
.astk-boucle-grille > section,
.astk-boucle-grille > .astk-promo {
  height: 100%;
}

.astk-boucle-grille .push-to-bottom {
  margin-top: auto;
}

/* Pagination */
.astk-pagination {
  margin-top: 40px;
}

.astk-pagination ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.astk-pagination a,
.astk-pagination span {
  display: inline-block;
  padding: 8px 14px;
  border-radius: 6px;
  font-family: var(--astrak-font-titre);
  text-decoration: none;
  color: var(--astrak-texte);
}

.astk-pagination .current {
  background-color: var(--astrak-accent);
  font-weight: 700;
}

/* Listes de contenus (plan du site, listings) */
.astk-liste-contenus {
  display: grid;
  grid-template-columns: repeat(var(--astk-colonnes, 2), 1fr);
  gap: 8px 30px;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (max-width: 1024px) {
  .astk-boucle-grille {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 767px) {
  .astk-boucle-grille,
  .astk-liste-contenus {
    grid-template-columns: 1fr;
  }
}

/* --------------------------------------------------------------------------
   Carte promotionnelle du blog
   --------------------------------------------------------------------------
   Styles repris du snippet WPCode qui injectait cette carte dans la boucle
   Elementor. Ils étaient dans un <style> à l'intérieur du HTML injecté :
   la carte étant désormais rendue par le thème, ils vivent ici.
   -------------------------------------------------------------------------- */

.astk-promo {
  height: 100%;
}

.custom-promo-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 250px;
  padding: 50px 30px;
  border-radius: 12px;
}

.custom-promo-title {
  margin-bottom: 15px;
  color: var(--astrak-texte);
  font-family: var(--astrak-font-titre);
  font-size: 32px;
  font-weight: 700;
}

.custom-promo-text {
  margin-bottom: 25px;
  color: var(--astrak-texte);
  font-size: 16px;
  line-height: 1.6;
}

.custom-promo-button {
  display: inline-block;
  padding: 12px 24px;
  background: var(--astrak-accent);
  color: var(--astrak-texte);
  border-radius: 15px;
  font-family: var(--astrak-font-titre);
  font-size: 18px;
  font-weight: 700;
  text-decoration: none;
  transition: all 0.3s ease;
}

.custom-promo-button:hover {
  transform: translateY(-2px);
  opacity: 0.9;
}

@media (max-width: 767px) {
  .custom-promo-card {
    min-height: unset;
    padding: 0 30px;
  }
}

/* ==========================================================================
   Variables globales du kit Elementor
   --------------------------------------------------------------------------
   Reprises telles quelles depuis le kit (post 44306). Les feuilles transposées
   de chaque page y font référence : sans elles, couleurs et typographies
   deviennent invalides et les éléments héritent de valeurs quelconques.
   ========================================================================== */

:root {
  --e-global-color-primary:#04132C;
  --e-global-color-secondary:#FFFFFF;
  --e-global-color-text:#0F0F3D;
  --e-global-color-accent:#FFEF5E;
  --e-global-color-75ed867:#F5F5F52B;
  --e-global-color-ad5b543:#04BE72;
  --e-global-typography-primary-font-family:"Outfit";
  --e-global-typography-primary-font-size:2em;
  --e-global-typography-primary-font-weight:700;
  --e-global-typography-primary-line-height:1.2em;
  --e-global-typography-secondary-font-family:"Outfit";
  --e-global-typography-secondary-font-size:1.4em;
  --e-global-typography-secondary-font-weight:600;
  --e-global-typography-text-font-family:"Source Sans Pro";
  --e-global-typography-text-font-size:1em;
  --e-global-typography-text-font-weight:400;
  --e-global-typography-accent-font-family:"Source Sans Pro";
  --e-global-typography-accent-font-size:1.1em;
  --e-global-typography-accent-font-weight:600;
  --e-global-typography-336383b-font-family:"Source Sans Pro";
  --e-global-typography-336383b-font-size:0.8em;
  --e-global-typography-336383b-font-weight:700;
  --e-global-typography-336383b-text-transform:uppercase;
  --e-global-typography-ead09b6-font-family:"Source Sans Pro";
  --e-global-typography-ead09b6-font-size:1.2em;
  --e-global-typography-ead09b6-font-weight:700;
  --e-global-typography-ead09b6-line-height:1.2em;
}

/* --------------------------------------------------------------------------
   Alignement des boutons
   --------------------------------------------------------------------------
   Chez Elementor c'est une classe sur le widget. « justify » étire le bouton
   sur toute la largeur disponible : sans cette règle, il se réduit à son texte
   et donne l'impression d'être décalé.
   -------------------------------------------------------------------------- */

.astk-btn-justify .astk-btn {
  width: 100%;
}

.astk-btn-left { text-align: left; }
.astk-btn-center { text-align: center; }
.astk-btn-right { text-align: right; }

@media (max-width: 1024px) {
  .astk-btn-tablette-justify .astk-btn { width: 100%; }
  .astk-btn-tablette-left { text-align: left; }
  .astk-btn-tablette-center { text-align: center; }
  .astk-btn-tablette-right { text-align: right; }
}

@media (max-width: 767px) {
  .astk-btn-mobile-justify .astk-btn { width: 100%; }
  .astk-btn-mobile-left { text-align: left; }
  .astk-btn-mobile-center { text-align: center; }
  .astk-btn-mobile-right { text-align: right; }
}

/* Un lien placé dans un titre hérite de la couleur du titre, comme chez
   Elementor. Sans cette règle, il prend celle du thème : dans le pied de page,
   les liens devenaient bleu foncé sur fond bleu nuit, illisibles. */
/* Descendant et non enfant direct : le conteneur de décor s'intercale souvent
   entre le titre et son lien. */
.astk-titre a,
.astk-icone-titre a {
  color: inherit;
  font-size: inherit;
  line-height: inherit;
}

/* --------------------------------------------------------------------------
   Compteurs
   --------------------------------------------------------------------------
   Le widget d'origine animait le décompte au défilement. L'animation étant
   purement décorative et coûteuse en JavaScript, le nombre est affiché tel quel.
   -------------------------------------------------------------------------- */

.astk-compteur-nombre {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 2px;
}

.astk-compteur-titre {
  text-align: center;
}

/* Valeurs par défaut du kit pour ce widget. Sans elles, les compteurs
   héritaient de la couleur du texte courant : sur la bande sombre des pages
   « ville », cela donnait du navy sur du navy, illisible. Le :where() maintient
   la spécificité à zéro pour que les règles par élément restent prioritaires. */
:where(.astk-compteur-nombre) {
  color: var( --e-global-color-primary );
  font-family: var( --e-global-typography-primary-font-family ), sans-serif;
  font-size: var( --e-global-typography-primary-font-size );
  font-weight: var( --e-global-typography-primary-font-weight );
  line-height: var( --e-global-typography-primary-line-height );
}

:where(.astk-compteur-titre) {
  color: var( --e-global-color-secondary );
  font-family: var( --e-global-typography-secondary-font-family ), sans-serif;
  font-size: var( --e-global-typography-secondary-font-size );
  font-weight: var( --e-global-typography-secondary-font-weight );
}

/* --------------------------------------------------------------------------
   Bandeaux (ex-carrousels)
   --------------------------------------------------------------------------
   Les carrousels d'images ne servaient qu'à faire défiler des logos ou des noms.
   Une piste horizontale suffit : pas de bibliothèque, et tout reste accessible
   au clavier et aux lecteurs d'écran.
   -------------------------------------------------------------------------- */

.astk-bandeau {
  width: 100%;
  overflow-x: auto;
  scrollbar-width: none;
}

.astk-bandeau::-webkit-scrollbar {
  display: none;
}

.astk-bandeau-piste {
  display: flex;
  align-items: center;
  gap: 40px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.astk-bandeau-item {
  flex: 0 0 auto;
  max-width: calc(100% / var(--astk-vues, 4));
  margin: 0;
  list-style: none;
}

.astk-bandeau-item img {
  max-width: 100%;
  height: auto;
}

@media (max-width: 767px) {
  .astk-bandeau-piste {
    gap: 24px;
  }

  .astk-bandeau-item {
    max-width: calc(100% / 2);
  }
}

/* --------------------------------------------------------------------------
   Carte
   -------------------------------------------------------------------------- */

/* Le bloc doit occuper la largeur disponible : dans un conteneur centré, il se
   réduirait sinon à la largeur naturelle de l'iframe. */
.astk-carte {
  width: 100%;
}

.astk-carte-cadre {
  display: block;
  width: 100%;
  border: 0;
  border-radius: 15px;
}

@media (max-width: 767px) {
  .astk-carte-cadre {
    height: 250px !important;
  }
}

/* --------------------------------------------------------------------------
   Formulaire de contact
   -------------------------------------------------------------------------- */

.astk-form {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 100%;
}

.astk-form-champ {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 100%;
  margin: 0;
}

.astk-form-moitie {
  flex: 1 1 calc(50% - 10px);
  min-width: 220px;
}

.astk-form label {
  font-family: var(--astrak-font-texte);
  font-size: 14px;
}

.astk-form input,
.astk-form textarea,
.astk-form select {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid rgba(15, 15, 61, 0.15);
  border-radius: 8px;
  font-family: var(--astrak-font-texte);
  font-size: 16px;
  background-color: #fff;
  color: var(--astrak-texte);
}

.astk-form input:focus,
.astk-form textarea:focus,
.astk-form select:focus {
  outline: 2px solid var(--astrak-accent);
  outline-offset: 1px;
}

/* Champ piège : retiré de l'affichage sans display:none, que certains robots
   savent détecter. */
.astk-form-piege {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.astk-form-envoi {
  flex: 1 1 100%;
  margin: 0;
}

.astk-form button {
  border: 0;
  cursor: pointer;
}

.astk-form-ok,
.astk-form-erreur {
  flex: 1 1 100%;
  margin: 0;
  padding: 12px 16px;
  border-radius: 8px;
  font-family: var(--astrak-font-texte);
}

.astk-form-ok {
  background-color: rgba(4, 190, 114, 0.12);
  color: #04713f;
}

.astk-form-erreur {
  background-color: rgba(200, 30, 30, 0.1);
  color: #a11;
}

/* --------------------------------------------------------------------------
   Fiches « ville »
   --------------------------------------------------------------------------
   Le contenu est inséré dans la zone de contenu du thème, qui est un conteneur
   flex. Sans cette enveloppe en bloc, chaque section deviendrait une colonne.
   -------------------------------------------------------------------------- */

.astk-ville-corps {
  display: block;
  width: 100%;
  min-width: 0;
}

.astk-ville .site-content,
.astk-ville .content-area,
.astk-ville .site-main {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
}
