/* ==========================================================================
   i-GRH Action Conseil — feuille de styles
   --------------------------------------------------------------------------
   Reprend à l'identique les valeurs du site d'origine (CMS Zébulon :
   desktop.css / tablet.css / mobile.css + CSS communs), réécrites en
   un seul fichier responsive.

   Convention de nommage : BEM — .bloc, .bloc__element, .bloc--variante.
   États : .is-open, .is-visible ; page courante : [aria-current="page"].

   Points de rupture (identiques à l'origine) :
     1600 / 1500 / 1350 / 1200  ajustements « desktop »
     1024  bascule « tablette » (menu horizontal masqué, bandeau sous la barre)
      961  zone 5 : sections resserrées, boutons rapides masqués
      599  bascule « mobile »
   ========================================================================== */

/* Polices — fichiers d'origine (Open Sans / Roboto, SIL OFL & Apache 2.0),
   hébergés localement : rendu identique et aucun appel à Google Fonts. */
@font-face {
  font-family: 'Open Sans';
  src: url('../fonts/opensans-light-webfont.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Open Sans';
  src: url('../fonts/opensans-regular-webfont.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
/* Famille à part, comme à l'origine : si elle faisait partie de « Open Sans »,
   tout texte en italique léger serait rendu avec cette graisse. Les italiques
   des intros restent ainsi un oblique calculé de la Light, comme l'origine. */
@font-face {
  font-family: 'Open Sans SemiBold Italic';
  src: url('../fonts/opensans-semibolditalic-webfont.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Open Sans';
  src: url('../fonts/opensans-bold-webfont.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Open Sans Light Only';
  src: url('../fonts/opensans-light-webfont.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Roboto';
  src: url('../fonts/roboto-light-webfont.woff') format('woff');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

:root {
  --violet: #514592;
  --violet-title: #544090;
  --gris: #767676;
  --gris-nav: #b4b4b4;
  --gris-point: #dfdfdf;
  --gris-bordure: #d7d7d7;
  --gris-cadre: #dfdfd9;
  --gris-fond: #f4f4f4;
  --gris-form: #dfdfdf;
  --brun-texte: #342e1d;
  --noir: #000;
  --blanc: #fff;
  --panneau: rgba(5, 12, 20, 0.84);     /* bgBlue84D&P.png */
  --bouton-rapide: rgba(0, 0, 0, 0.7);  /* bgBlack70.png */
  --bouton-rapide-survol: rgba(0, 0, 0, 0.9);

  --font-sans: 'Open Sans', sans-serif;
  --font-sans-light-only: 'Open Sans Light Only', 'Open Sans', sans-serif;
  --font-sans-sbi: 'Open Sans SemiBold Italic', 'Open Sans', sans-serif;
  --font-roboto: 'Roboto', sans-serif;

  --header-height: 105px;
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-padding-top: var(--header-height); }

body {
  margin: 0;
  font-family: var(--font-sans);
  font-weight: 300;
  font-size: 16px;
  color: var(--noir);
  background: var(--blanc);
}

img { max-width: 100%; height: auto; vertical-align: bottom; }

a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; }

p {
  margin: 0;
  font-size: 1em;
  line-height: 180%;
  text-align: justify;
}

/* À l'origine, <strong> réclame du gras dans une famille qui ne contient que
   la Light : le navigateur épaissit la Light (gras synthétique), plus fin
   qu'un vrai Bold. Même mécanisme ici via une famille « Light seule ». */
strong { font-family: var(--font-sans-light-only); font-weight: 700; }

.icon {
  display: inline-block;
  width: auto;
  height: 1em;
  fill: currentColor;
  flex-shrink: 0;
}

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.skip-link {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 30000;
  padding: 10px 15px;
  background: var(--violet);
  color: var(--blanc);
  transform: translateY(-100%);
}
.skip-link:focus { transform: none; }

:focus-visible { outline: 2px solid var(--violet); outline-offset: 2px; }

/* --------------------------------------------------------------------------
   En-tête : barre fixe + bandeau
   -------------------------------------------------------------------------- */
.site-header__bar {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 20000;
  width: 100%;
  height: var(--header-height);
  background: url('../img/pattern-dark.png');
}

/* Le site d'origine masque la barre quand le menu latéral est ouvert. */
.menu-is-open .site-header__bar { visibility: hidden; }

.site-header__inner {
  display: flex;
  align-items: flex-start;
  width: 96%;
  height: 100%;
  margin-left: 2%;
}

.site-header__logo {
  flex-shrink: 0;
  margin-top: 24px;
}

.site-header__banner img { width: 100%; }

/* Pages intérieures : bandeau réduit + filet violet de 6px */
.site-header__banner--small { border-bottom: 6px solid var(--violet); }

/* Navigation horizontale (3 liens) */
.main-nav {
  flex: 0 0 70%;
  margin-left: auto;
  margin-right: 1%;
  font-size: 16px;
}
.main-nav--compact { font-size: 14px; }

.main-nav__list {
  display: flex;
  justify-content: flex-end;
  margin: 0;
  padding: 0;
  list-style: none;
  white-space: nowrap;
}

.main-nav__item {
  margin-right: 100px;
  font-size: 1.125em;
  font-weight: 400;
}

.main-nav__link {
  display: block;
  height: var(--header-height);
  padding-top: 35px;
  color: var(--gris-nav);
  text-transform: uppercase;
}

.main-nav__link:hover {
  color: var(--blanc);
  text-decoration: none;
  border-bottom: 6px solid var(--violet);
}

.main-nav__link[aria-current="page"],
.main-nav__link[aria-current="page"]:hover {
  color: var(--blanc);
  border-bottom: none;
}

/* Bouton « MENU » */
.menu-toggle-wrap {
  display: flex;
  justify-content: flex-end;
  flex: 0 0 10%;
}

.menu-toggle {
  width: 104px;
  height: 17px;
  margin-top: 40px;
  padding: 0;
  border: 0;
  background: url('../img/menu-button.png') no-repeat;
  cursor: pointer;
}
.menu-toggle:hover { background-image: url('../img/menu-button-hover.png'); }

/* --------------------------------------------------------------------------
   Menu latéral (« flipflap »)
   -------------------------------------------------------------------------- */
.side-menu {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 21001;
  width: 25%;
  height: 100vh;
  height: 100dvh;
  overflow-y: auto;
  padding-top: 35px;
  background: var(--panneau);
  color: var(--blanc);
  transform: translateX(-100%);
  visibility: hidden;
  transition: transform 0.7s cubic-bezier(0.5, 2, 0.5, 0.8), visibility 0s 0.7s;
}

.side-menu.is-open {
  transform: none;
  visibility: visible;
  transition: transform 0.7s cubic-bezier(0.5, 2, 0.5, 0.8);
}

.side-menu__logo {
  padding: 0 10% 20px;
}

.side-menu__close {
  position: absolute;
  top: 10px;
  right: 10px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--blanc);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

.side-menu__list {
  margin: 10px 0 0;
  padding: 0;
  list-style: none;
}

.side-menu__link {
  display: block;
  padding: 15px 15%;
  font-size: 16px;
  font-weight: 400;
  color: var(--blanc);
  text-transform: uppercase;
}

.side-menu__link:hover,
.side-menu__link[aria-current="page"] {
  background: var(--violet);
  text-decoration: none;
}

/* --------------------------------------------------------------------------
   Boutons rapides (accueil / haut de page), bord droit de l'écran
   -------------------------------------------------------------------------- */
.quick-buttons {
  position: fixed;
  top: 200px;
  right: 0;
  z-index: 5;
}

.quick-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 55px;
  height: 55px;
  margin-bottom: 2px;
  background: var(--bouton-rapide);
  color: var(--blanc);
}
.quick-button:hover { background: var(--bouton-rapide-survol); }

.quick-button--top {
  font-size: 30px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s, visibility 0s 0.4s;
}
.quick-button--top.is-visible {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.4s;
}

/* --------------------------------------------------------------------------
   Mise en page
   -------------------------------------------------------------------------- */
.section { background: var(--gris-fond); }
.section::after { content: ''; display: table; clear: both; }

/* Colonne étroite : accueil, formulaire, pied de page, mentions légales */
.layout-narrow {
  width: 40%;
  margin-left: 30%;
}

/* Cadre blanc des pages de contenu (volontairement décentré, comme l'origine) */
.content-box {
  width: 66%;
  margin-left: 21%;
  padding: 100px 4%;
  background: var(--blanc);
}

/* --------------------------------------------------------------------------
   Titre de page + séparateur « 3 points »
   -------------------------------------------------------------------------- */
.page-title {
  margin: 0.67em 0;
  font-size: 34px;
  font-weight: 400;
  line-height: 80%;
  color: var(--violet-title);
}

.page-title--section { margin: 0; }

.page-title__sub {
  display: block;
  margin-top: 6px;
  font-size: 0.5em;
  font-weight: 300;
  color: var(--gris);
}

.separator {
  width: 35px;
  height: 7px;
  margin: 30px 0 33px;
  border: 0;
  /* 3 points de 7px espacés de 7px : un point calé à gauche de chaque motif de 14px */
  background: radial-gradient(circle 3.5px at 3.5px 3.5px, var(--gris-point) 3px, transparent 3.5px) 0 0 / 14px 7px repeat-x;
}

/* À l'origine titre, séparateur et intro sont des flottants : leurs marges
   s'additionnent au lieu de fusionner. Valeurs mesurées sur le site d'origine. */
.page-title + .separator { margin-top: 57px; }
.page-title--section + .separator { margin-top: 33px; }
.separator + .intro { margin-top: 66px; }
.content-box > .separator:last-child { margin-bottom: 41px; }

/* --------------------------------------------------------------------------
   Contenus éditoriaux
   -------------------------------------------------------------------------- */
.intro {
  width: 96%;
  margin: 30px 0;
  padding: 0;
  font-style: italic;
}

.intro p + p { margin-top: 20px; }

/* Paddings plutôt que marges : à l'origine ces blocs flottent et leurs
   espacements s'additionnent avec ceux des séparateurs. */
.content-body { padding-bottom: 40px; }
.content-body::after { content: ''; display: table; clear: both; }

.content-body p + p { margin-top: 20px; }
.content-body--left p { text-align: left; }

.main-picture {
  display: block;
  float: left;
  width: 40%;
  margin: 0 5% 30px 0;
}
/* image en ligne, avec l'espace de ligne de base sous l'image comme à l'origine */
.main-picture img { margin-top: 10px; vertical-align: baseline; }

.photo-zoom:hover img { opacity: 0.8; }

/* Liste à puces : inline-block à côté de la photo flottante, comme à
   l'origine — une liste trop large passe naturellement sous la photo. */
.bullet-list {
  display: inline-block;
  margin: 0;
  padding-left: 40px;
  line-height: 180%;
}

.gallery {
  display: flex;
  flex-wrap: wrap;
  gap: 0 10px;
  padding: 15px 0;
}

.gallery__item {
  width: 200px;
  height: 200px;
  margin: 10px 0;
  overflow: hidden;
}

/* --------------------------------------------------------------------------
   Accueil
   -------------------------------------------------------------------------- */
.home-intro { padding-top: 100px; }

.link-box {
  display: flex;
  align-items: center;
  gap: 4px;
  margin: 0 0 40px;
  padding: 2%;
  border: 1px solid var(--gris-cadre);
  border-radius: 8px;
  font-family: var(--font-roboto);
  font-size: 16px;
}

/* glyphicons « paired » de l'origine, redessinée en SVG en ligne */
.link-box__icon { flex-shrink: 0; margin-top: -2px; }

.service__header {
  display: flex;
  align-items: flex-start;
  margin-bottom: 5px;
}

.service__icon {
  margin: 14px 20px 0 0;
  font-size: 32px;
  color: var(--violet);
}

.service__title {
  margin: 0.83em 0;
  font-size: 19px;
  font-weight: 700;
}

.more-link {
  display: block;
  margin: 15px 0 40px;
  font-family: var(--font-sans-sbi);
  font-weight: 400;
  color: var(--violet);
}

/* --------------------------------------------------------------------------
   Formulaire de contact
   -------------------------------------------------------------------------- */
.contact-form-section {
  padding: 100px 0;
  background: var(--gris-form) url('../img/contact-form-bg.jpg');
}

.contact-form__fields {
  display: flex;
  align-items: flex-start;
  gap: 2%;
  padding-top: 24px;
}

.contact-form__col { flex: 0 0 30%; }
.contact-form__col--message { flex: 0 0 68%; }

.contact-form__input {
  display: block;
  width: calc(98% + 2px);
  margin: 0 0 7px;
  padding: 10px 2%;
  border: 1px solid var(--gris-bordure);
  border-radius: 3px;
  font: 300 1em var(--font-sans);
  color: var(--noir);
  opacity: 0.5;
}

.contact-form__input:focus { outline: none; opacity: 0.8; }

textarea.contact-form__input { resize: vertical; }

.contact-form__honeypot {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.contact-form__actions { margin-top: 20px; }

.button {
  display: inline-block;
  padding: 7px 20px;
  border: 1px solid #514492;
  border-radius: 20px;
  background: #514492;
  font: 400 17px var(--font-sans);
  color: var(--blanc);
  cursor: pointer;
  transition: background-color 0.5s ease, border 0.5s ease, color 0.5s ease;
}
.button:hover { background: var(--blanc); color: #514492; }
.button:disabled { cursor: wait; opacity: 0.6; }

.form-status {
  margin-top: 15px;
  text-align: left;
}
.form-status:empty { margin: 0; }
.form-status[data-state="success"] { color: var(--violet); font-weight: 400; }
.form-status[data-state="error"] { color: #b00020; font-weight: 400; }

/* --------------------------------------------------------------------------
   Pied de page (coordonnées)
   -------------------------------------------------------------------------- */
.site-footer {
  padding: 100px 0;
  background: url('../img/pattern-dark.png');
  color: var(--blanc);
}

.site-footer__col { width: 60%; }

.site-footer__title {
  margin: 0 0 20px;
  font-size: 1.5em;
  font-weight: 700;
}

.site-footer__infos {
  margin: 0;
  font-size: 1.5em;
  font-style: normal;
}

.site-footer__name { color: var(--violet); }

/* --------------------------------------------------------------------------
   Mentions légales
   -------------------------------------------------------------------------- */
.legal { padding: 100px 0; }

/* Titres flottants à l'origine : marges additionnées (mesurées) */
.legal__heading {
  margin: 45px 0 10px;
  font-size: 19px;
  font-weight: 700;
}
.page-title + .legal__heading { margin-top: 39px; }
/* l'origine laisse une ligne vide de 5px à la fin du premier bloc */
.legal__heading:nth-of-type(2) { margin-top: 50px; }

.legal__line {
  margin: 0 0 5px;
  font-family: var(--font-roboto);
  color: var(--noir);
}
.legal__value { color: var(--brun-texte); }

/* À l'origine, la règle « ul, p » de desktop.css l'emporte : textes en noir */
.legal__line p { font-family: var(--font-sans); color: var(--noir); }

.legal a { text-decoration: underline; }
.legal a:hover { text-decoration: none; }

/* --------------------------------------------------------------------------
   Lightbox — reprend jquery.lightbox-0.5 (fond noir 80 %, cadre blanc 10px)
   -------------------------------------------------------------------------- */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 30000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(0, 0, 0, 0.8);
}
.lightbox[hidden] { display: none; }

.lightbox__box {
  display: flex;
  flex-direction: column;
  max-width: 100%;
  max-height: 100%;
  background: var(--blanc);
}

.lightbox__image {
  position: relative;
  padding: 10px;
  line-height: 0;
}

.lightbox__image img {
  max-width: calc(100vw - 60px);
  max-height: calc(100vh - 150px);
}

.lightbox__nav {
  position: absolute;
  inset: 10px;
  display: flex;
  justify-content: space-between;
}

.lightbox__nav button {
  width: 49%;
  padding: 0 10px;
  border: 0;
  background: none;
  font-size: 40px;
  color: var(--blanc);
  text-shadow: 0 0 6px rgba(0, 0, 0, 0.6);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.lightbox__nav button:hover,
.lightbox__nav button:focus-visible { opacity: 1; }
.lightbox__prev { text-align: left; }
.lightbox__next { text-align: right; }
.lightbox__nav[hidden] { display: none; }

.lightbox__data {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 0 20px 10px;
  font: 10px/1.4em Verdana, Helvetica, sans-serif;
  color: #666;
}

.lightbox__details { flex: 1; }
.lightbox__caption { display: block; font-weight: bold; }
.lightbox__count { display: block; padding-bottom: 1em; }

.lightbox__close {
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-transform: uppercase;
  cursor: pointer;
}

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 1600px) {
  .main-nav__item { margin-right: 50px; }
}

@media (max-width: 1500px) {
  .content-box { width: 76%; margin-left: 11%; }
  .layout-narrow { width: 50%; margin-left: 25%; }
}

@media (max-width: 1350px) {
  .layout-narrow { width: 60%; margin-left: 20%; }
  .main-nav__item { font-size: 1.025em; margin-right: 40px; }
}

@media (max-width: 1200px) {
  .main-nav__item { font-size: 0.9em; margin-right: 30px; }
}

/* Tablettes et mobiles : le site d'origine servait la version « mobile »
   (mobile.css) à tous les appareils tactiles, iPad compris. */
@media (max-width: 1024px) {
  .site-header { margin-top: var(--header-height); }
  .main-nav { display: none; }
  .menu-toggle-wrap { margin-left: auto; }

  .content-box { width: 90%; margin-left: 5%; padding-inline: 2%; }
  .layout-narrow { width: 90%; margin-left: 5%; }

  .contact-form-section { background-image: none; }
  .contact-form__fields,
  .contact-form__actions,
  .form-status { width: 90%; margin-left: 5%; }
  .contact-form__fields { display: block; }
  /* 2e groupe de champs à l'origine : son titre vide ajoute cet écart */
  .contact-form__col--message { margin-top: 27px; }

  .site-footer__col { width: 100%; }
  .service__icon { margin-right: 5px; }

  .side-menu { width: 40%; }
}

@media (max-width: 961px) {
  .quick-buttons { display: none; }
  .main-picture { float: none; width: 100%; margin-right: 0; }
  .side-menu { width: 80%; }
}

/* Mobile (mobile.css + zone 6 de l'origine) */
@media (max-width: 599px) {
  p,
  .bullet-list li { font-size: 20px; }
  p { text-align: left; }

  .gallery__item { width: 100%; height: auto; margin: 10px 0 15px; }
  .gallery__item img { width: 100%; }

  .button { font-size: 20px; }

  .side-menu { width: 100%; }
  .side-menu__link { padding: 10px 5%; }
}

@media (max-height: 480px) {
  .side-menu { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .side-menu,
  .side-menu.is-open,
  .quick-button--top { transition: none; }
}
