*,*::before,*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  font-size: 16px;
  overflow-x: hidden;
}

:root {
  --couleur-primaire: #5C4E6A;
  --couleur-primaire-survol: #7A6888;
  --couleur-texte: #1E1B22;
  --couleur-texte-sec: #3D3548;
  --couleur-texte-ui: #524860;
  --couleur-texte-accent: #5C4E6A;
  --couleur-fond: #F7F5F2;
  --couleur-fond-alt: #EEE9E4;
  --couleur-fond-sombre: #352D3E;
  --couleur-fond-moyen: #3D3447;
  --couleur-pale: #E8E2DC;
  --couleur-deco-claire: #B8A8C4;
  --couleur-deco-moyenne: #8A7898;
  --couleur-inverse: #FFFFFF;
  --couleur-inverse-sec: #EDE6F5;
  --couleur-inverse-moy: #C8BCD8;
  --rayon: 1.5rem;
  --rayon-sm: 0.75rem;
  --ombre: 0 0.25rem 2rem rgba(92, 78, 106, 0.07);
  --ombre-survol: 0 0.75rem 3rem rgba(92, 78, 106, 0.14);
  --transition: cubic-bezier(0.4, 0, 0.2, 1);
  --police-titre: 'Cormorant Garamond', serif;
  --police-corps: 'Nunito', sans-serif;
}

@view-transition {
  navigation: auto;
}

@keyframes fondu-entree {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fondu-sortie {
  from { opacity: 1; }
  to   { opacity: 0; }
}

::view-transition-old(root) {
  animation: fondu-sortie 0.28s ease forwards;
}

::view-transition-new(root) {
  animation: fondu-entree 0.35s ease forwards;
}

body {
  font-family: var(--police-corps);
  background: var(--couleur-fond);
  color: var(--couleur-texte);
  line-height: 1.7;
  overflow-x: hidden;
}

a {
  text-decoration: none;
  color: inherit;
}

img {
  display: block;
  max-width: 100%;
}

.adresse-pied {
  font-style: normal;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.adresse-pied p:last-child {
  padding-top: 1.1rem;
}

.lien-acces {
  position: absolute;
  top: -100%;
  left: 1rem;
  background: var(--couleur-primaire);
  color: #fff;
  padding: 0.5rem 1.25rem;
  border-radius: var(--rayon-sm);
  z-index: 9999;
  transition: top 0.2s;
}

.lien-acces:focus {
  top: 1rem;
}

.banniere-entete {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 200;
  background: var(--couleur-primaire);
  box-shadow: 0 0.125rem 1.5rem rgba(53, 45, 62, 0.35);
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 3rem;
}

.site-nav__marque {
  display: flex;
  align-items: center;
  gap: 0.85rem;
}

.site-nav__logo-img {
  width: 5.5rem;
  height: 5.5rem;
  object-fit: contain;
  display: block;
  border-radius: 50%;
}

.site-nav__nom {
  font-family: var(--police-titre);
  font-size: 1.45rem;
  font-weight: 500;
  color: #fff;
  letter-spacing: 0.02em;
}

.site-nav__nom em {
  font-style: normal;
  color: var(--couleur-inverse-sec);
}

.site-nav__liste {
  display: flex;
  align-items: center;
  gap: 2.25rem;
  list-style: none;
}

.site-nav__liste a:not(.site-nav__btn) {
  position: relative;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.82);
  transition: color 0.25s;
  padding-bottom: 0.2rem;
}

.site-nav__liste a:not(.site-nav__btn)::after {
  content: '';
  position: absolute;
  bottom: -0.0625rem;
  left: 0;
  width: 100%;
  height: 5px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 5' preserveAspectRatio='none'%3E%3Cpath d='M1,4 Q15,1 30,3 Q45,5 59,2' fill='none' stroke='%23B8A8C4' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  opacity: 0;
  transform: scaleX(0.4);
  transform-origin: left;
  transition: opacity 0.3s, transform 0.35s var(--transition);
}

.site-nav__liste a:not(.site-nav__btn):hover,
.site-nav__liste a[aria-current="page"] {
  color: #fff;
}

.site-nav__liste a:not(.site-nav__btn):hover::after,
.site-nav__liste a[aria-current="page"]::after {
  opacity: 1;
  transform: scaleX(1);
}

.site-nav__btn {
  display: inline-block;
  background: rgba(255, 255, 255, 0.15);
  border: 0.0625rem solid rgba(255, 255, 255, 0.35);
  color: #fff;
  padding: 0.55rem 1.4rem;
  border-radius: 2rem;
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  transition: background 0.25s, border-color 0.25s, transform 0.25s;
}

.site-nav__btn:hover {
  background: rgba(255, 255, 255, 0.26);
  border-color: rgba(255, 255, 255, 0.6);
  transform: translateY(-0.0625rem);
  color: #fff;
}

.site-nav__burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 0.3125rem;
  background: transparent;
  border: none;
  padding: 0.45rem 0.35rem;
  cursor: pointer;
}

.site-nav__burger-trait {
  display: block;
  width: 1.5rem;
  height: 0.125rem;
  background: #fff;
  border-radius: 0.0625rem;
  transition: transform 0.25s var(--transition), opacity 0.25s;
}

.menu-mobile {
  background: var(--couleur-fond-sombre);
  border-left: 0.0625rem solid rgba(184, 168, 196, 0.1);
  max-width: 20rem;
  width: 100%;
}

.menu-mobile__entete {
  padding: 1.5rem 1.5rem 1.25rem;
  border-bottom: 0.0625rem solid rgba(184, 168, 196, 0.1);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.menu-mobile__titre {
  font-family: var(--police-titre);
  font-size: 1.45rem;
  font-weight: 500;
  color: #fff;
  letter-spacing: 0.02em;
  margin: 0;
  line-height: 1.2;
}

.menu-mobile__titre em {
  font-style: normal;
  color: var(--couleur-inverse-sec);
}

.menu-mobile__fermer {
  background: rgba(255, 255, 255, 0.08);
  border: 0.0625rem solid rgba(184, 168, 196, 0.2);
  color: rgba(255, 255, 255, 0.75);
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.22s, color 0.22s;
  flex-shrink: 0;
}

.menu-mobile__fermer:hover {
  background: rgba(255, 255, 255, 0.16);
  color: #fff;
}

.menu-mobile__corps {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 2rem;
  overflow-y: auto;
}

.menu-mobile__liste {
  list-style: none;
  padding: 0;
  margin: 0;
}

.menu-mobile__liste li {
  border-bottom: 0.0625rem solid rgba(184, 168, 196, 0.08);
}

.menu-mobile__liste li:first-child {
  border-top: 0.0625rem solid rgba(184, 168, 196, 0.08);
}

.menu-mobile__liste a {
  display: block;
  padding: 1rem 0.25rem;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.78);
  transition: color 0.22s, padding-left 0.22s;
}

.menu-mobile__liste a:hover {
  color: #fff;
  padding-left: 0.5rem;
}

.menu-mobile__rdv {
  display: flex;
  justify-content: center;
  text-align: center;
  width: 100%;
}

.menu-mobile__reseaux {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding-top: 0.25rem;
}

.menu-mobile__reseaux a {
  font-size: 0.82rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.6);
  transition: color 0.22s;
}

.menu-mobile__reseaux a:hover {
  color: #fff;
}

.menu-mobile__reseaux span {
  color: rgba(255, 255, 255, 0.3);
  font-size: 0.5rem;
}

.pied-de-page__logo-lien {
  display: inline-block;
  margin-bottom: 1rem;
  transition: opacity 0.25s;
}

.pied-de-page__logo-lien:hover {
  opacity: 0.82;
}

.pied-de-page__logo-lien::after {
  display: none;
}

@keyframes tourner-sens-horaire {
  to { transform: rotate(360deg); }
}

@keyframes tourner-sens-antihoraire {
  to { transform: rotate(-360deg); }
}

@keyframes monter {
  from {
    opacity: 0;
    transform: translateY(1.75rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  padding: 8rem 3rem 5rem;
}

.hero__fond {
  position: absolute;
  inset: 0;
}

.hero__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.hero__voile {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(242, 238, 233, 0.68) 0%, rgba(92, 78, 106, 0.08) 60%, rgba(53, 45, 62, 0.18) 100%);
  z-index: 1;
}

.hero__contenu {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 35rem;
  animation: monter 1s ease both;
}

.hero__accroche {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--couleur-texte-accent);
  background: rgba(255, 255, 255, 0.65);
  backdrop-filter: blur(0.5rem);
  padding: 0.4rem 1rem;
  border-radius: 2rem;
  margin-bottom: 1.6rem;
}

.hero__point {
  display: block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--couleur-primaire);
}

.hero__titre {
  font-family: var(--police-titre);
  font-size: clamp(2.8rem, 6vw, 5rem);
  font-weight: 400;
  line-height: 1.1;
  color: var(--couleur-texte);
  margin-bottom: 1.4rem;
  letter-spacing: -0.01em;
}

.hero__titre em {
  font-style: italic;
  color: var(--couleur-primaire);
}

.hero__sous-titre {
  font-size: 1.05rem;
  color: var(--couleur-texte-sec);
  line-height: 1.85;
  margin-bottom: 2.5rem;
}

.hero__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  flex-wrap: wrap;
  margin-bottom: 2.5rem;
}

.hero__note {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  font-size: 0.85rem;
  color: var(--couleur-texte-ui);
}

.hero__note-ligne {
  width: 1.5rem;
  height: 0.0625rem;
  background: var(--couleur-deco-claire);
}

.btn-prim {
  display: inline-flex;
  align-items: center;
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.95rem;
  background: var(--couleur-primaire);
  color: #fff;
  padding: 0.9rem 2rem;
  border-radius: 2rem;
  border: none;
  cursor: pointer;
  transition: background 0.28s, transform 0.28s, box-shadow 0.28s;
  box-shadow: 0 0.25rem 1.25rem rgba(92, 78, 106, 0.22);
}

.btn-prim:hover {
  background: var(--couleur-primaire-survol);
  transform: translateY(-0.125rem);
  box-shadow: 0 0.5rem 1.75rem rgba(92, 78, 106, 0.3);
  color: #fff;
}

.btn-calli {
  position: relative;
  background: transparent;
  border: none;
  padding: 0.7rem 0.2rem 1.7rem;
  font-family: var(--police-titre);
  font-style: italic;
  font-weight: 400;
  font-size: 1.25rem;
  color: var(--couleur-texte-sec);
  cursor: pointer;
  letter-spacing: 0.03em;
  transition: color 0.3s;
  display: inline-block;
}

.btn-calli canvas {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 20px;
  pointer-events: none;
}

.btn-calli:hover {
  color: var(--couleur-primaire);
}

.btn-calli--inverse {
  color: var(--couleur-inverse-sec);
}

.btn-calli--inverse:hover {
  color: #fff;
}

.btn-tel {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.95rem;
  background: transparent;
  color: #fff;
  padding: 0.85rem 1.75rem;
  border-radius: 2rem;
  border: 0.09375rem solid rgba(184, 168, 196, 0.35);
  cursor: pointer;
  transition: background 0.25s, border-color 0.25s, transform 0.25s;
  text-decoration: none;
}

.btn-tel:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(184, 168, 196, 0.65);
  transform: translateY(-0.09375rem);
  color: #fff;
}

.btn-discret {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--couleur-texte-sec);
  padding: 0.85rem 1.5rem;
  border-radius: 2rem;
  border: 0.0625rem solid rgba(184, 168, 196, 0.4);
  transition: color 0.25s, border-color 0.25s, background 0.25s;
  text-decoration: none;
}

.btn-discret:hover {
  color: var(--couleur-primaire);
  border-color: rgba(92, 78, 106, 0.3);
  background: rgba(92, 78, 106, 0.04);
}

.ruban {
  background: var(--couleur-primaire);
  padding: 1rem 3rem;
}

.ruban__interieur {
  max-width: 68.75rem;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  flex-wrap: wrap;
}

.ruban__item {
  font-family: var(--police-titre);
  font-size: 1rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #fff;
}

.ruban__sep {
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.65rem;
}

.section {
  padding: 6rem 3rem;
}

.section--alt {
  background: var(--couleur-fond-alt);
}

.section--moyen {
  background: var(--couleur-fond-moyen);
}

.etiquette-section {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--couleur-texte-accent);
  margin-bottom: 0.5rem;
  display: block;
}

.etiquette-section--inverse {
  color: #D8CCEC;
}

.titre-section {
  font-family: var(--police-titre);
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 400;
  line-height: 1.18;
  color: var(--couleur-texte);
  margin-bottom: 1rem;
}

.titre-section em {
  font-style: italic;
  color: var(--couleur-primaire);
}

.titre-section--inverse {
  color: var(--couleur-inverse);
}

.titre-section--inverse em {
  color: var(--couleur-deco-claire);
}

.chapeau {
  font-size: 1.1rem;
  color: var(--couleur-texte-sec);
  line-height: 1.85;
  max-width: 32.5rem;
  margin: 0 auto;
}

.reveal {
  opacity: 1;
  transform: none;
}

.reveal--visible {
  opacity: 1;
  transform: none;
}

.apropos__citation {
  font-family: var(--police-titre);
  font-size: 1.4rem;
  font-style: italic;
  font-weight: 300;
  color: var(--couleur-primaire);
  line-height: 1.55;
  border-left: 0.125rem solid var(--couleur-deco-claire);
  padding-left: 1.4rem;
  margin: 1.5rem 0;
}

.apropos__paragraphe {
  color: var(--couleur-texte-sec);
  font-size: 0.97rem;
  line-height: 1.88;
  margin-bottom: 1rem;
}

.apropos__etiquettes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 1.5rem;
}

.apropos__etiquette {
  background: var(--couleur-pale);
  color: var(--couleur-texte-accent);
  font-size: 0.78rem;
  font-weight: 700;
  padding: 0.3rem 0.9rem;
  border-radius: 2rem;
}

.col-12.col-lg-6:has(.apropos__visuel) {
  overflow: visible;
}

.apropos__visuel {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  overflow: visible;
}

.apropos__cadre-photo {
  position: relative;
  width: 18rem;
  height: 18rem;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  isolation: isolate;
}

.apropos__anneau-1 {
  position: absolute;
  inset: -1.25rem;
  border-radius: 50%;
  border: 0.09375rem solid rgba(92, 78, 106, 0.45);
  pointer-events: none;
  z-index: 0;
  animation: tourner-sens-horaire 22s linear infinite;
}

.apropos__anneau-2 {
  position: absolute;
  inset: -2.25rem;
  border-radius: 50%;
  border: 0.0625rem solid rgba(92, 78, 106, 0.22);
  pointer-events: none;
  z-index: 0;
  animation: tourner-sens-antihoraire 35s linear infinite;
}

.apropos__points {
  position: absolute;
  inset: -2.5rem;
  width: calc(100% + 5rem);
  height: calc(100% + 5rem);
  pointer-events: none;
  z-index: 5;
}

.apropos__photo {
  width: 18rem;
  height: 18rem;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
  position: relative;
  z-index: 1;
  box-shadow: var(--ombre-survol);
  flex-shrink: 0;
}

.apropos__badge {
  position: absolute;
  bottom: 1.5rem;
  right: 0;
  background: #fff;
  border-radius: var(--rayon-sm);
  padding: 0.8rem 1rem;
  box-shadow: var(--ombre-survol);
  text-align: center;
  z-index: 3;
}

.apropos__badge-titre {
  font-family: var(--police-titre);
  font-size: 1.8rem;
  font-weight: 600;
  color: var(--couleur-primaire);
  line-height: 1;
}

.apropos__badge-texte {
  font-size: 0.68rem;
  color: var(--couleur-texte-ui);
  max-width: 5rem;
  line-height: 1.35;
  margin-top: 0.15rem;
}

.services {
  background: var(--couleur-fond-alt);
  scroll-margin-top: 8rem;
}

.tarifs {
  scroll-margin-top: 8rem;
}

.temoignages {
  scroll-margin-top: 8rem;
}

.services .etiquette-section {
  color: var(--couleur-texte-accent);
}

.services .titre-section {
  color: var(--couleur-texte);
}

.services .titre-section em {
  color: var(--couleur-primaire);
}

.services .chapeau {
  color: var(--couleur-texte-sec);
}

.carte-service {
  background: var(--couleur-primaire);
  border-radius: var(--rayon);
  overflow: hidden;
  border: 0.0625rem solid rgba(255, 255, 255, 0.1);
  transition: transform 0.3s var(--transition), box-shadow 0.3s var(--transition);
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.carte-service::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--couleur-deco-claire), rgba(255, 255, 255, 0.6));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s var(--transition);
}

.carte-service:hover {
  box-shadow: 0 0.5rem 2rem rgba(53, 45, 62, 0.25);
}

.carte-service:hover::after {
  transform: scaleX(1);
}

.carte-service__image {
  height: 17rem;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.05);
}

.carte-service__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.carte-service__corps {
  padding: 1.6rem 1.5rem 1.8rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.carte-service__categorie {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--couleur-inverse-sec);
  margin-bottom: 0.35rem;
}

.carte-service__titre {
  font-family: var(--police-titre);
  font-size: 1.5rem;
  font-weight: 500;
  color: #fff;
  margin-bottom: 0.7rem;
  line-height: 1.25;
}

.carte-service__titre em {
  font-style: italic;
  color: var(--couleur-deco-claire);
}

.carte-service__texte {
  color: rgba(237, 230, 245, 0.92);
  font-size: 1rem;
  line-height: 1.8;
  margin-bottom: 1.25rem;
  letter-spacing: 0.025em;
}

.lien-calligraphie {
  position: relative;
  background: transparent;
  border: none;
  padding: 0.55rem 0.15rem 1.45rem;
  font-family: var(--police-titre);
  font-style: italic;
  font-size: 1.12rem;
  color: rgba(237, 230, 245, 0.92);
  cursor: pointer;
  letter-spacing: 0.03em;
  transition: color 0.3s;
  display: inline-block;
  align-self: flex-start;
}

.carte-service .lien-calligraphie {
  margin-top: auto;
}

.lien-calligraphie canvas {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1.125rem;
  pointer-events: none;
}

.lien-calligraphie:hover {
  color: #fff;
}

.carte-article .lien-calligraphie {
  color: var(--couleur-texte-ui);
  margin-top: auto;
  padding-top: 1rem;
  align-self: flex-start;
}

.carte-article .lien-calligraphie:hover {
  color: var(--couleur-primaire);
}

.processus {
  position: relative;
  padding: 6rem 3rem;
  overflow: hidden;
}

.processus__fond {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.processus__image-fond {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.processus__voile {
  position: absolute;
  inset: 0;
  background: rgba(247, 245, 242, 0.80);
  z-index: 1;
}

.processus__interieur {
  position: relative;
  z-index: 2;
}

.processus__ligne-grille {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  margin-top: 2.5rem;
  gap: 0;
}

.etape__trait {
  display: block;
  flex: 0 0 4rem;
  height: 0.0625rem;
  background: var(--couleur-deco-moyenne);
  opacity: 0.5;
  margin-top: 1.3rem;
  align-self: flex-start;
}

.etape {
  text-align: center;
  padding: 0 0.5rem;
  flex: 1;
}

.etape__numero {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  border: 0.09375rem solid var(--couleur-deco-moyenne);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1rem;
  font-family: var(--police-corps);
  font-size: 1rem;
  font-weight: 500;
  color: var(--couleur-primaire);
  line-height: 1;
  transition: all 0.28s;
}

.etape__titre {
  font-family: var(--police-titre);
  font-size: 1.3rem;
  font-weight: 500;
  color: var(--couleur-texte);
  margin-bottom: 0.45rem;
}

.etape__texte {
  font-size: 0.97rem;
  color: var(--couleur-texte-sec);
  line-height: 1.75;
}

.carte-tarif {
  border: 0.09375rem solid rgba(184, 168, 196, 0.25);
  border-radius: var(--rayon);
  padding: 2rem 1.75rem;
  background: #fff;
  transition: all 0.28s var(--transition);
  height: 100%;
}

.carte-tarif:hover {
  transform: translateY(-0.25rem);
  box-shadow: var(--ombre-survol);
}

.carte-tarif--vedette {
  background: var(--couleur-primaire);
  border-color: var(--couleur-primaire);
}

.carte-tarif__categorie {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--couleur-texte);
  margin-bottom: 0.35rem;
}

.carte-tarif--vedette .carte-tarif__categorie {
  color: var(--couleur-inverse-sec);
}

.carte-tarif__nom {
  font-family: var(--police-titre);
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--couleur-texte);
  margin-bottom: 0.5rem;
}

.carte-tarif--vedette .carte-tarif__nom {
  color: #fff;
}

.carte-tarif__badge {
  display: inline-block;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  padding: 0.18rem 0.55rem;
  border-radius: 2rem;
  margin-left: 0.35rem;
  vertical-align: middle;
}

.carte-tarif__prix {
  font-family: var(--police-titre);
  font-size: 3rem;
  font-weight: 600;
  color: var(--couleur-primaire);
  line-height: 1;
  margin-top: 0.85rem;
  margin-bottom: 1.4rem;
}

.carte-tarif--vedette .carte-tarif__prix {
  color: var(--couleur-pale);
}

.carte-tarif__prix sup {
  font-size: 1.85rem;
  vertical-align: super;
  font-weight: 400;
}

.carte-tarif__duree {
  display: none;
}

.carte-tarif--vedette .carte-tarif__duree {
  color: rgba(232, 226, 220, 0.88);
}

.carte-tarif__ligne {
  height: 0.0625rem;
  background: rgba(184, 168, 196, 0.45);
  margin-bottom: 1.1rem;
}

.carte-tarif--vedette .carte-tarif__ligne {
  background: rgba(255, 255, 255, 0.28);
}

.carte-tarif__liste {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.carte-tarif__liste li {
  display: flex;
  gap: 0.5rem;
  font-size: 0.97rem;
  color: var(--couleur-texte-sec);
  line-height: 1.5;
}

.carte-tarif--vedette .carte-tarif__liste li {
  color: rgba(232, 226, 220, 0.9);
}

.carte-tarif__coche {
  color: var(--couleur-texte-accent);
  flex-shrink: 0;
}

.carte-tarif--vedette .carte-tarif__coche {
  color: var(--couleur-inverse-sec);
}

.carte-temoignage {
  background: #E8E5E2;
  border: 0.0625rem solid rgba(92, 78, 106, 0.08);
  border-radius: var(--rayon);
  padding: 1.75rem;
  transition: background 0.28s, box-shadow 0.28s;
  height: 100%;
}

.carte-temoignage:hover {
  background: #EAE8E5;
  box-shadow: 0 0.5rem 2rem rgba(53, 45, 62, 0.18);
}

.carte-temoignage__etoiles {
  display: flex;
  gap: 0.25rem;
  margin-bottom: 1.1rem;
  color: var(--couleur-primaire);
  font-size: 1rem;
}

.carte-temoignage__texte {
  font-family: var(--police-titre);
  font-size: 1.12rem;
  font-style: italic;
  font-weight: 400;
  color: var(--couleur-texte);
  line-height: 1.75;
  margin-bottom: 1.4rem;
  letter-spacing: 0.02em;
}

.carte-temoignage__auteur {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.carte-temoignage__avatar {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 50%;
  background: rgba(92, 78, 106, 0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--couleur-primaire);
  flex-shrink: 0;
}

.carte-temoignage__nom {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--couleur-texte);
}

.carte-temoignage__service {
  font-size: 0.82rem;
  color: var(--couleur-texte-sec);
  margin-top: 0.08rem;
}

.appel {
  background: linear-gradient(180deg, #F3F1EF 0%, #ECE8E5 40%, #E8E4E1 70%, #D9D4D1 100%);
  position: relative;
  display: flex;
  align-items: stretch;
  min-height: 40rem;
  overflow: hidden;
}

.appel__deco {
  flex: 0 0 22%;
  max-width: 22%;
  position: relative;
  overflow: hidden;
}

.appel__image-deco {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.appel__deco--gauche .appel__image-deco {
  object-position: right center;
  mask-image: linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 100%);
  -webkit-mask-image: linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 100%);
}

.appel__deco--droite .appel__image-deco {
  object-position: right center;
  mask-image: linear-gradient(to left, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 100%);
  -webkit-mask-image: linear-gradient(to left, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 100%);
}

.appel__contenu {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  padding: 5rem 2rem;
  z-index: 1;
}

.appel__fond {
  display: none;
}

.appel__interieur {
  position: relative;
  z-index: 1;
  text-align: center;
  max-width: 35rem;
}

.appel__titre {
  font-family: var(--police-titre);
  font-size: clamp(2.1rem, 4.5vw, 3.6rem);
  font-weight: 400;
  font-style: italic;
  color: var(--couleur-texte);
  margin-bottom: 1.1rem;
  line-height: 1.18;
}

.appel__texte {
  color: var(--couleur-texte-sec);
  font-size: 0.97rem;
  line-height: 1.85;
  margin-bottom: 2.4rem;
}

.appel__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.appel__meta {
  margin-top: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  flex-wrap: wrap;
}

.appel__meta-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.83rem;
  color: var(--couleur-texte-ui);
}

.appel__point {
  width: 0.25rem;
  height: 0.25rem;
  border-radius: 50%;
  background: var(--couleur-primaire);
}

.pied-de-page {
  background: var(--couleur-fond-sombre);
  padding: 3.5rem 0 1.75rem;
  border-top: 0.0625rem solid rgba(184, 168, 196, 0.1);
}

.pied-de-page__grille {
  padding-bottom: 2.25rem;
  border-bottom: 0.0625rem solid rgba(184, 168, 196, 0.08);
}

.pied-de-page__nom {
  font-family: var(--police-titre);
  font-size: 1.25rem;
  font-weight: 500;
  color: #fff;
  margin-bottom: 0.5rem;
}

.pied-de-page__nom em {
  font-style: normal;
  color: #fff;
}

.pied-de-page__slogan {
  font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.85);
  line-height: 1.7;
  max-width: 14.375rem;
  margin-bottom: 1.4rem;
}

.pied-de-page__titre-col {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--couleur-deco-claire);
  margin-bottom: 1.1rem;
}

.pied-de-page__liens {
  list-style: none;
  padding-left: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.pied-de-page__liens a {
  font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.85);
  transition: color 0.22s;
  position: relative;
  padding-bottom: 0.15rem;
}

.pied-de-page__liens a::after {
  content: '';
  position: absolute;
  bottom: -0.125rem;
  left: 0;
  width: 100%;
  height: 5px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 5' preserveAspectRatio='none'%3E%3Cpath d='M1,4 Q15,1 30,3 Q45,5 59,2' fill='none' stroke='%23B8A8C4' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  opacity: 0;
  transform: scaleX(0.4);
  transform-origin: left;
  transition: opacity 0.3s, transform 0.35s var(--transition);
}

.pied-de-page__liens a:hover {
  color: #fff;
}

.pied-de-page__liens a:hover::after {
  opacity: 1;
  transform: scaleX(1);
}

.pied-de-page__contact-item {
  display: flex;
  gap: 0.5rem;
  font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 0.6rem;
  line-height: 1.5;
}

.pied-de-page__contact-item a {
  color: rgba(255, 255, 255, 0.85);
  transition: color 0.22s;
}

.pied-de-page__contact-item a:hover {
  color: #fff;
}

.pied-de-page__bas {
  padding-top: 1.4rem;
  border-top: 0.0625rem solid rgba(184, 168, 196, 0.08);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.pied-de-page__credit {
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.85);
}

.pied-de-page__credit a {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 0.2em;
  transition: color 0.2s;
}

.pied-de-page__credit a:hover {
  color: var(--couleur-deco-claire);
}

.pied-de-page__copyright {
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.7);
}

.pied-de-page__legal {
  display: flex;
  gap: 1.4rem;
}

.pied-de-page__legal a {
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.7);
  transition: color 0.22s;
}

.pied-de-page__legal a:hover,
.pied-de-page__legal [aria-current="page"] {
  color: #fff;
}

.entete-page {
  padding: 10rem 3rem 4.5rem;
  background: var(--couleur-primaire);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.entete-page__deco {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 70% 50%, rgba(184, 168, 196, 0.12) 0%, transparent 65%);
  pointer-events: none;
}

.entete-page__etiquette {
  font-size: 0.73rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--couleur-inverse-sec);
  margin-bottom: 0.5rem;
  display: block;
  position: relative;
}

.entete-page__titre {
  font-family: var(--police-titre);
  font-size: clamp(2rem, 5vw, 3.6rem);
  font-weight: 400;
  color: #fff;
  line-height: 1.15;
  margin-bottom: 1rem;
  position: relative;
}

.entete-page__titre em {
  font-style: italic;
  color: var(--couleur-deco-claire);
}

.entete-page__chapeau {
  font-size: 1.15rem;
  color: rgba(237, 230, 245, 0.82);
  max-width: 36rem;
  margin: 0 auto;
  line-height: 1.85;
  position: relative;
}

.options-reservation {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.75rem;
}

.option-reservation {
  background: #fff;
  border: 0.0625rem solid rgba(184, 168, 196, 0.25);
  border-radius: var(--rayon);
  padding: 2.5rem 2rem;
  text-align: center;
  transition: transform 0.28s var(--transition), box-shadow 0.28s var(--transition);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.option-reservation:hover {
  transform: translateY(-0.25rem);
  box-shadow: var(--ombre-survol);
}

.option-reservation--sombre {
  background: var(--couleur-fond-sombre);
  border-color: rgba(184, 168, 196, 0.12);
}

.option-reservation__icone {
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: rgba(92, 78, 106, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.25rem;
  flex-shrink: 0;
}

.option-reservation--sombre .option-reservation__icone {
  background: rgba(255, 255, 255, 0.08);
}

.option-reservation__etiquette {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--couleur-texte-accent);
  margin-bottom: 0.35rem;
}

.option-reservation--sombre .option-reservation__etiquette {
  color: var(--couleur-deco-claire);
}

.option-reservation__titre {
  font-family: var(--police-titre);
  font-size: 1.55rem;
  font-weight: 500;
  color: var(--couleur-texte);
  margin-bottom: 0.75rem;
  line-height: 1.25;
}

.option-reservation--sombre .option-reservation__titre {
  color: #fff;
}

.option-reservation__texte {
  font-size: 0.92rem;
  color: var(--couleur-texte-sec);
  line-height: 1.8;
  margin-bottom: auto;
  padding-bottom: 1.75rem;
}

.option-reservation--sombre .option-reservation__texte {
  color: rgba(232, 226, 220, 0.75);
}

.option-reservation__tel {
  font-family: var(--police-titre);
  font-size: 1.85rem;
  font-weight: 500;
  color: var(--couleur-deco-claire);
  display: block;
  margin-bottom: 1.25rem;
  letter-spacing: 0.02em;
  line-height: 1.2;
}

.formulaire-contact {
  background: #fff;
  border: 0.0625rem solid rgba(184, 168, 196, 0.2);
  border-radius: var(--rayon);
  padding: 2.75rem;
}

.formulaire-contact__titre {
  font-family: var(--police-titre);
  font-size: 1.6rem;
  font-weight: 400;
  color: var(--couleur-texte);
  margin-bottom: 0.35rem;
  line-height: 1.2;
}

.formulaire-contact__sous-titre {
  font-size: 0.92rem;
  color: var(--couleur-texte-sec);
  margin-bottom: 2rem;
  line-height: 1.75;
}

.champ {
  margin-bottom: 1.25rem;
}

.champ__label {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--couleur-texte-ui);
  letter-spacing: 0.04em;
  margin-bottom: 0.4rem;
}

.champ__input,
.champ__select,
.champ__textarea {
  width: 100%;
  background: var(--couleur-fond);
  border: 0.0625rem solid rgba(184, 168, 196, 0.35);
  border-radius: var(--rayon-sm);
  padding: 0.75rem 1rem;
  font-family: var(--police-corps);
  font-size: 0.95rem;
  color: var(--couleur-texte);
  transition: border-color 0.22s, box-shadow 0.22s;
  -webkit-appearance: none;
  appearance: none;
}

.champ__input:focus,
.champ__select:focus,
.champ__textarea:focus {
  outline: none;
  border-color: var(--couleur-primaire);
  box-shadow: 0 0 0 0.1875rem rgba(92, 78, 106, 0.12);
}

.champ__input::placeholder,
.champ__textarea::placeholder {
  color: rgba(82, 72, 96, 0.4);
}

.champ__textarea {
  resize: vertical;
  min-height: 6.5rem;
  line-height: 1.7;
}

.champ__select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235C4E6A' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
  background-size: 0.75rem;
  padding-right: 2.5rem;
  cursor: pointer;
}

.formulaire-contact__confidentialite {
  font-size: 0.8rem;
  color: var(--couleur-texte-ui);
  margin-top: 1rem;
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  line-height: 1.6;
}

.formulaire-contact__confidentialite svg {
  flex-shrink: 0;
  margin-top: 0.09375rem;
}

.infos-contact {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.info-contact {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  background: var(--couleur-fond-alt);
  border-radius: var(--rayon-sm);
  padding: 1.1rem 1.25rem;
}

.info-contact__icone {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: rgba(92, 78, 106, 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.info-contact__label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--couleur-texte-ui);
  margin-bottom: 0.15rem;
}

.info-contact__valeur {
  font-size: 0.97rem;
  color: var(--couleur-texte);
  font-weight: 500;
  line-height: 1.5;
}

.info-contact__valeur a {
  color: var(--couleur-primaire);
  transition: color 0.2s;
}

.info-contact__valeur a:hover {
  color: var(--couleur-primaire-survol);
}

.contenu-legal {
  max-width: 48rem;
  margin: 0 auto;
}

.contenu-legal__intro {
  font-size: 1rem;
  color: var(--couleur-texte-sec);
  line-height: 1.9;
  margin-bottom: 0.5rem;
}

.contenu-legal__date {
  font-size: 0.82rem;
  color: var(--couleur-texte-ui);
  margin-bottom: 3rem;
  font-style: italic;
}

.contenu-legal__section {
  margin-bottom: 2.75rem;
}

.contenu-legal__section-titre {
  font-family: var(--police-titre);
  font-size: 1.3rem;
  font-weight: 500;
  color: var(--couleur-texte);
  margin-bottom: 0.85rem;
  padding-bottom: 0.5rem;
  border-bottom: 0.0625rem solid rgba(184, 168, 196, 0.3);
}

.contenu-legal__paragraphe {
  font-size: 0.95rem;
  color: var(--couleur-texte-sec);
  line-height: 1.9;
  margin-bottom: 0.85rem;
}

.contenu-legal__paragraphe:last-child {
  margin-bottom: 0;
}

.contenu-legal__liste {
  list-style: none;
  padding: 0;
  margin-bottom: 0.85rem;
}

.contenu-legal__liste li {
  font-size: 0.95rem;
  color: var(--couleur-texte-sec);
  line-height: 1.9;
  padding-left: 1.35rem;
  position: relative;
  margin-bottom: 0.25rem;
}

.contenu-legal__liste li::before {
  content: '\2014';
  position: absolute;
  left: 0;
  color: var(--couleur-texte-ui);
}

.contenu-legal__lien {
  color: var(--couleur-primaire);
  text-decoration: underline;
  text-decoration-color: rgba(92, 78, 106, 0.3);
  transition: text-decoration-color 0.2s;
}

.contenu-legal__lien:hover {
  text-decoration-color: var(--couleur-primaire);
  color: var(--couleur-primaire);
}

.contenu-legal__encadre {
  background: var(--couleur-fond-alt);
  border-left: 0.1875rem solid var(--couleur-deco-moyenne);
  border-radius: 0 var(--rayon-sm) var(--rayon-sm) 0;
  padding: 1.25rem 1.5rem;
  margin: 1.25rem 0;
}

.contenu-legal__encadre p {
  font-size: 0.92rem;
  color: var(--couleur-texte-sec);
  line-height: 1.85;
  margin: 0;
}

.page-404 {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  padding: 6rem 2rem;
}

.page-404__fond {
  position: absolute;
  inset: 0;
}

.page-404__image-fond {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.page-404__voile {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(242, 238, 233, 0.9) 0%, rgba(247, 245, 242, 0.94) 100%);
}

.page-404__contenu {
  position: relative;
  z-index: 2;
  text-align: center;
  max-width: 34rem;
  animation: monter 0.9s ease both;
}

.page-404__nombre {
  font-family: var(--police-titre);
  font-size: clamp(8rem, 22vw, 16rem);
  font-weight: 300;
  color: var(--couleur-primaire);
  line-height: 0.88;
  opacity: 0.15;
  display: block;
  letter-spacing: -0.04em;
  margin-bottom: -1.5rem;
  user-select: none;
}

.page-404__etiquette {
  font-size: 0.73rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--couleur-texte-accent);
  margin-bottom: 0.75rem;
  display: block;
  position: relative;
}

.page-404__titre {
  font-family: var(--police-titre);
  font-size: clamp(1.85rem, 4vw, 2.9rem);
  font-weight: 400;
  color: var(--couleur-texte);
  margin-bottom: 1rem;
  position: relative;
  line-height: 1.2;
}

.page-404__titre em {
  font-style: italic;
  color: var(--couleur-primaire);
}

.page-404__texte {
  font-size: 1rem;
  color: var(--couleur-texte-sec);
  line-height: 1.85;
  margin-bottom: 2.5rem;
}

.page-404__liens {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  flex-wrap: wrap;
  list-style: none;
  padding: 0;
  margin: 0;
}

.blogue__vedette {
  margin-bottom: 3rem;
}

.blogue__vedette-lien {
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: #fff;
  border: 0.0625rem solid rgba(184, 168, 196, 0.2);
  border-radius: var(--rayon);
  overflow: hidden;
  transition: transform 0.28s var(--transition), box-shadow 0.28s var(--transition);
  text-decoration: none;
  color: inherit;
}

.blogue__vedette-lien:hover {
  transform: translateY(-0.25rem);
  box-shadow: var(--ombre-survol);
  color: inherit;
}

.blogue__vedette-image {
  overflow: hidden;
  background: var(--couleur-fond-alt);
  height: 100%;
  min-height: 22rem;
}

.blogue__vedette-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.blogue__vedette-image svg {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.blogue__vedette-corps {
  padding: 3rem 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.blogue__vedette-meta {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-bottom: 1rem;
}

.blogue__vedette-titre {
  font-family: var(--police-titre);
  font-size: clamp(1.65rem, 3vw, 2.4rem);
  font-weight: 400;
  color: var(--couleur-texte);
  line-height: 1.2;
  margin-bottom: 1rem;
}

.blogue__vedette-extrait {
  font-size: 0.97rem;
  color: var(--couleur-texte-sec);
  line-height: 1.85;
  margin-bottom: 1.5rem;
}

.blogue__lire {
  font-family: var(--police-titre);
  font-style: italic;
  font-size: 1rem;
  color: var(--couleur-primaire);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  transition: gap 0.22s;
}

.blogue__vedette-lien:hover .blogue__lire {
  gap: 0.7rem;
}

.blogue__lire::after {
  content: none;
}

.blogue__categorie {
  display: inline-block;
  background: rgba(92, 78, 106, 0.09);
  color: var(--couleur-texte-accent);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 0.22rem 0.7rem;
  border-radius: 2rem;
}

.blogue__date {
  font-size: 0.82rem;
  color: var(--couleur-texte-ui);
}

.carte-article {
  background: #fff;
  border: 0.0625rem solid rgba(184, 168, 196, 0.2);
  border-radius: var(--rayon);
  overflow: hidden;
  height: 100%;
}



.carte-article__lien {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

.carte-article__lien:hover {
  color: inherit;
}

.carte-article__image {
  overflow: hidden;
  background: var(--couleur-fond-alt);
  flex-shrink: 0;
}

.carte-article__image img {
  display: block;
  width: 100%;
  height: 13.75rem;
  object-fit: cover;
  object-position: center;
  transition: transform 0.4s var(--transition);
}



.carte-article__image svg {
  display: block;
  width: 100%;
  transition: transform 0.4s var(--transition);
}



.carte-article__corps {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.carte-article__meta {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.65rem;
  flex-wrap: wrap;
}

.carte-article__titre {
  font-family: var(--police-titre);
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--couleur-texte);
  line-height: 1.3;
  margin-bottom: 0.6rem;
  transition: color 0.22s;
}



.carte-article__extrait {
  font-size: 0.97rem;
  color: var(--couleur-texte-sec);
  line-height: 1.8;
  margin: 0;
}

.blogue__infolettre {
  margin-top: 4rem;
  background: var(--couleur-fond-sombre);
  border-radius: var(--rayon);
  padding: 3rem;
}

.blogue__infolettre-interieur {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
}

.blogue__infolettre .etiquette-section {
  color: var(--couleur-deco-claire);
}

.blogue__infolettre .titre-section {
  color: var(--couleur-inverse);
}

.blogue__infolettre .titre-section em {
  color: var(--couleur-deco-claire);
}

.blogue__infolettre .chapeau {
  color: rgba(237, 230, 245, 0.75);
}

.blogue__infolettre-champs {
  display: flex;
  gap: 0.75rem;
  align-items: flex-end;
}

.blogue__infolettre-note {
  font-size: 0.9rem;
  color: rgba(255, 255, 255, 0.82);
  margin-top: 0.75rem;
  line-height: 1.6;
}

.blogue__infolettre-note a {
  color: rgba(184, 168, 196, 0.92);
  text-decoration: underline;
  transition: color 0.2s;
}

.blogue__infolettre-note a:hover {
  color: var(--couleur-deco-claire);
}

.blogue__infolettre-chapeau {
  margin: 0;
}

.blogue__infolettre-champ {
  margin: 0;
  flex: 1;
}

.blogue__infolettre-btn {
  white-space: nowrap;
}

.article__image-principale {
  width: 100%;
  background: var(--couleur-fond-alt);
}

.article__image-principale img {
  width: 100%;
  height: auto;
  display: block;
}

.article__image-principale svg {
  width: 100%;
  height: auto;
  display: block;
}

.entete-article {
  padding: 9rem 0 3.5rem;
  background: var(--couleur-primaire);
  position: relative;
  overflow: hidden;
}

.entete-article__deco {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 80% 30%, rgba(184, 168, 196, 0.14) 0%, transparent 60%);
  pointer-events: none;
}

.entete-article__interieur {
  max-width: 48rem;
  margin: 0 auto;
  padding: 0 1.5rem;
  position: relative;
}

.article__miette {
  list-style: none;
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
  padding: 0;
}

.article__miette li {
  font-size: 0.8rem;
  color: rgba(237, 230, 245, 0.82);
}

.article__miette a {
  color: rgba(237, 230, 245, 0.88);
  text-decoration: none;
  transition: color 0.2s;
}

.article__miette a:hover {
  color: #fff;
}

.article__miette [aria-current="page"] {
  color: rgba(237, 230, 245, 0.82);
}

.article__meta-entete {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-bottom: 1.1rem;
  flex-wrap: wrap;
}

.article__meta-entete .blogue__categorie {
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
}

.article__meta-entete .blogue__date {
  color: rgba(237, 230, 245, 0.82);
}

.article__lecture {
  font-size: 0.8rem;
  color: rgba(237, 230, 245, 0.82);
}

.article__titre {
  font-family: var(--police-titre);
  font-size: clamp(2rem, 5vw, 3.4rem);
  font-weight: 400;
  color: #fff;
  line-height: 1.15;
  margin-bottom: 1.1rem;
}

.article__accroche {
  font-size: 1.05rem;
  color: rgba(237, 230, 245, 0.82);
  line-height: 1.85;
  margin-bottom: 1.5rem;
}

.article__auteure {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}

.article__auteure-avatar {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--couleur-primaire);
  flex-shrink: 0;
}

.article__auteure-nom {
  font-size: 0.88rem;
  color: rgba(237, 230, 245, 0.88);
  font-weight: 600;
}

.article__corps {
  font-size: 1.1rem;
  color: var(--couleur-texte-sec);
  line-height: 1.95;
  margin-bottom: 3rem;
}

.article__corps h2 {
  font-family: var(--police-titre);
  font-size: 1.65rem;
  font-weight: 500;
  color: var(--couleur-texte);
  margin-top: 2.5rem;
  margin-bottom: 0.85rem;
  line-height: 1.25;
}

.article__corps p {
  margin-bottom: 1.15rem;
}

.article__corps p:last-child {
  margin-bottom: 0;
}

.article__corps blockquote cite {
  display: block;
  font-style: normal;
  font-family: var(--police-corps);
  font-size: 0.82rem;
  color: var(--couleur-texte-ui);
  margin-top: 0.5rem;
}

.article__pied {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
  padding-top: 2rem;
  border-top: 0.0625rem solid rgba(184, 168, 196, 0.25);
}

.article__partage {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.article__partage-label {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--couleur-texte-ui);
}

.article__partage-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--couleur-texte-sec);
  padding: 0.5rem 1rem;
  border-radius: 2rem;
  border: 0.0625rem solid rgba(184, 168, 196, 0.35);
  text-decoration: none;
  transition: color 0.22s, border-color 0.22s, background 0.22s;
}

.article__partage-btn:hover {
  color: var(--couleur-primaire);
  border-color: rgba(92, 78, 106, 0.3);
  background: rgba(92, 78, 106, 0.04);
}

.carte-service {
  overflow: visible;
}

.carte-service__image {
  border-radius: var(--rayon) var(--rayon) 0 0;
}

.carte-service__image img {
  border-radius: var(--rayon) var(--rayon) 0 0;
}



.carte-service::after {
  display: none;
}

.livre-temoignages {
  max-width: 52rem;
  margin: 3rem auto 0;
  position: relative;
}

.livre-scene {
  position: relative;
}

.livre-page {
  background: #faf8f5;
  border-radius: 0.25rem 1rem 1rem 0.25rem;
  padding: 3rem 4rem;
  box-shadow: 2px 0 8px rgba(92,78,106,0.12), 6px 2px 20px rgba(92,78,106,0.07), inset -2px 0 6px rgba(92,78,106,0.04);
  backface-visibility: hidden;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  position: relative;
}

.livre-scene--pret .livre-page {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  min-height: 100%;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  z-index: 1;
}

.livre-scene--pret .livre-page--actif {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  z-index: 2;
}

@keyframes page-sortir-avant {
  0%   { transform: translateX(0); opacity: 1; }
  100% { transform: translateX(-110%); opacity: 0; }
}

@keyframes page-entrer-avant {
  0%   { transform: translateX(110%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}

@keyframes page-sortir-arriere {
  0%   { transform: translateX(0); opacity: 1; }
  100% { transform: translateX(110%); opacity: 0; }
}

@keyframes page-entrer-arriere {
  0%   { transform: translateX(-110%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}

.livre-page--anime-sortir-avant {
  animation: page-sortir-avant 0.38s ease-in forwards;
}

.livre-page--anime-entrer-avant {
  animation: page-entrer-avant 0.42s ease-out backwards;
}

.livre-page--anime-sortir-arriere {
  animation: page-sortir-arriere 0.38s ease-in forwards;
}

.livre-page--anime-entrer-arriere {
  animation: page-entrer-arriere 0.42s ease-out backwards;
}

.livre-page__guillemet {
  font-family: var(--police-titre);
  font-size: 8rem;
  font-style: normal;
  color: rgba(92, 78, 106, 0.72);
  line-height: 0.7;
  position: absolute;
  top: 1.25rem;
  left: 2rem;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}

.livre-page__etoiles {
  display: flex;
  gap: 0.3rem;
  margin-top: 0.75rem;
  margin-bottom: 1.75rem;
  color: var(--couleur-primaire);
  font-size: 1.55rem;
  position: relative;
  z-index: 1;
  justify-content: center;
}

.livre-page__texte {
  font-family: var(--police-titre);
  font-size: 1.28rem;
  font-weight: 300;
  font-style: italic;
  color: var(--couleur-texte);
  line-height: 1.95;
  margin-bottom: 2rem;
  flex: 1;
  position: relative;
  z-index: 1;
  letter-spacing: 0.025em;
}

.livre-page__auteur {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding-top: 1.5rem;
  border-top: 0.0625rem solid rgba(184,168,196,0.3);
  position: relative;
  z-index: 1;
}

.livre-page__avatar {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: var(--couleur-primaire);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  font-weight: 700;
  flex-shrink: 0;
}

.livre-page__nom {
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--couleur-texte);
  line-height: 1.3;
  margin: 0;
}

.livre-page__service {
  font-size: 0.8rem;
  color: var(--couleur-texte-ui);
  margin-top: 0.1rem;
  margin-bottom: 0;
}

.livre-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  margin-top: 2rem;
}

.livre-nav__btn {
  background: rgba(255,255,255,0.1);
  border: 0.0625rem solid rgba(200,188,216,0.3);
  color: var(--couleur-inverse-moy);
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.25s, border-color 0.25s, color 0.25s, transform 0.25s;
  flex-shrink: 0;
}

.livre-nav__btn:hover {
  background: rgba(255,255,255,0.2);
  border-color: rgba(200,188,216,0.6);
  color: #fff;
  transform: scale(1.06);
}

.livre-nav__indicateurs {
  display: flex;
  gap: 0.65rem;
  align-items: center;
}

.livre-nav__point {
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s;
}

.livre-nav__point::after {
  content: '';
  display: block;
  width: 0.4375rem;
  height: 0.4375rem;
  border-radius: 50%;
  background: rgba(200,188,216,0.35);
  transition: background 0.3s, transform 0.3s;
}

.livre-nav__point--actif::after {
  background: var(--couleur-deco-claire);
  transform: scale(1.5);
}
.carte-tarif__nom-duree {
  display: inline-block;
  font-size: 0.82rem;
  font-weight: 400;
  font-family: var(--police-corps);
  color: var(--couleur-texte-ui);
  margin-left: 0.5rem;
  vertical-align: middle;
}

.carte-tarif--vedette .carte-tarif__nom-duree {
  color: rgba(255, 255, 255, 0.88);
}

.blogue__infolettre .champ__input {
  color: rgba(237, 230, 245, 0.95);
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.22);
}

.blogue__infolettre .champ__input::placeholder {
  color: rgba(237, 230, 245, 0.65);
}
.blogue__vedette-corps .lien-calligraphie {
  color: var(--couleur-texte-ui);
}

.blogue__vedette-corps .lien-calligraphie:hover {
  color: var(--couleur-primaire);
}

.adresse-pied a {
  position: relative;
  padding-bottom: 0.15rem;
  transition: color 0.22s;
}

.adresse-pied a::after {
  content: '';
  position: absolute;
  bottom: -0.125rem;
  left: 0;
  width: 100%;
  height: 5px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 5' preserveAspectRatio='none'%3E%3Cpath d='M1,4 Q15,1 30,3 Q45,5 59,2' fill='none' stroke='%23B8A8C4' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  opacity: 0;
  transform: scaleX(0.4);
  transform-origin: left;
  transition: opacity 0.3s, transform 0.35s var(--transition);
}

.adresse-pied a:hover::after {
  opacity: 1;
  transform: scaleX(1);
}

.blogue__infolettre-succes,
.blogue__infolettre-erreur {
    color: #ffffff;
    font-size: 1.1rem;
    font-weight: 600;
    text-align: center;
    padding: 1rem;
}

.blogue__infolettre-erreur {
    color: #ffb3b3;
}